-
LLM의 input및 output 토큰별 FLOPS와 전력 소모량 계산
안녕하세요 jiogenes 입니다. 오늘은 LLM의 토큰별 연산량과 그에따른 전력소모량을 추정할 수 있는 방법에 대해 알아보겠습니다. Introduction 바야흐로 비싼 GPU만 있으면(혹은 클라우드를 돌릴 돈이 충분하다면) 여러종류의 오픈소스 대규모 LLM을 로컬로 편하게 돌려볼 수 있는 시대가 되었습니다. 하지만 LLM은 절대 공짜로 돌아가는게 아닙니다! GPU를 살때도 비싸지만 바로 전기를 어마어마하게 먹기 때문입니다. OpenAI가 구독료를 많이 받음에도 불구하고 계속해서 적자를 보는것도 GPU 구매 비용 뿐만 아니라 유지비용이 상당히 많이 들기 때문입니다. 그렇다면 도대체 얼마나 전기를 먹길래 이... Read More
-
[논문리뷰] A Survey on In-context Learning
안녕하세요 jiogenes입니다. 오늘은 NLP에서 뜨거운 주제인 In-context learning에 대한 서베이 논문을 리뷰해보고자 합니다. 위 논문은 In-context learning(ICL)에 대한 정의와 ICL을 적용하기 위한 최신 기술들에 대한 소개 및 ICL을 활용한 application에 대해 소개하고 있습니다. 이 글에서는 제가 읽은 논문에 대해서 간략하게 소개해 놓았으며, 실제로는 더 많은 내용이 있으므로 더 자세히 알고싶은 부분은 실제 논문의 섹션에서 참고 논문을 통해 알아보시면 좋을것 같습니다. Introduction LLM의 규모가 커지면서 LLM은 ICL(In-Context Le... Read More
-
[논문리뷰] AdaLoRA: Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning
안녕하세요 jiogenes입니다. 오늘은 대표적인 PEFT 방법 중 LoRA를 개선한 AdaLoRA: Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning 라는 논문을 리뷰해 보도록 하겠습니다. 혹시라도 LoRA를 모르거나 궁금하신 분들은 이전 포스팅을 참고해 주세요 🤗 소개 이 논문은 2023 ICLR에 출판되었고 제가 포스팅을 하는 시점에 109회가 인용될 정도로 퀄리티가 높고 인기 좋은 논문입니다. 허깅페이스의 peft 라이브러리 중에 가장 먼저 탑 컨퍼런스에 출판된 논문이기도 합니다. 그리고 이것이 논문의 아이디어와 해결책이 리뷰어에게 높은 ... Read More
-
[논문리뷰] LoRA vs LoHa vs LoKr
안녕하세요 jiogenes 입니다. 오늘은 허깅페이스의 peft 라이브러리에서 지원하는 대표적인 PEFT 방법 중 하나인 LoRA와 LoRA의 개선작들에 대해 알아보겠습니다. 논문 자체에 대한 리뷰 보다는 논문에 나와있는 메소드 위주로 알아보고 어떤 차이점이 있는지 알아보도록 하겠습니다. PEFT란? 우리가 흔히 말하는 LLM은 Large Language Model의 약자로써 말그대로 거대한 언어 모델입니다. 언어 모델이란 이전 단어의 순열을 보고 다음 단어가 뭐가 나올지 잘 맞추는 모델을 말합니다. 우리 인간은 모두 뇌속에 초거대 언어 모델을 하나씩 가지고 있는 셈이지요. 하지만 이렇게 다음 단어가 어떤게... Read More
-
[RunPod] 런팟으로 LLM 파인튜닝
안녕하세요 jiogenes 입니다. 오늘은 저번 runpod 튜토리얼에 이어서 runpod 내에서 LLM을 학습해보겠습니다. LLM을 학습하려면 큰 GPU 메모리가 필요한데요. 보통 7B(70억)파라미터 짜리 LLM을 fp32 데이터 타입으로 로드한다고 하면 70억(7B) * 4(Byte) ≈ 280억(28B) Byte ≈ 28GB 정도가 됩니다. 모델 훈련을 하고자 한다면 그레디언트와 optimizer의 파라미터로 인해 약 3배 정도 메모리가 더 필요하므로 훈련을 위해서 대략 80GB 이상의 메모리가 필요하다고 예상할 수 있습니다. 그런데 고작 7B모델만 훈련하려고 해도 현존하는 가장 큰 용량의 그래픽카... Read More
-
세상에서 제일 쉬운 트랜스포머
안녕하세요 jiogenes 입니다. 이번에는 transformer에 대해 공부해보겠습니다. 다른 블로그에서도 많이 다루고 있는 주제이긴 하지만 선수지식이 없는 상태에서 처음 트랜스포머를 배울때 코드가 정말 이해가 안됐던 기억이 있습니다. 제가 부족해서 그렇겠지만 저 말고도 다른 분들은 쉽게쉽게 이해하고 넘어가기 바라는 마음에서 코드구현상 어려운 부분을 모조리 제외하고 아주 쉽게 트랜스포머를 설명해 보고 직접 학습까지 돌려보도록 하겠습니다. 트랜스포머의 기본 설명은 제외하겠습니다. 이미 저 말고도 똑똑하신 분들이 설명을 잘해놓은 블로그들이 많아서 반복해서 설명하는것은 시간 낭비 일뿐 큰 도움이 되지 않을것... Read More
-
[RunPod] GPU가 없어요? GPU 메모리가 부족해요? 런팟을 사용해보세요
안녕하세요 jiogenes입니다. 제가 연구하고 있는 곳에서는 각자 일정 할당량 만큼 서버에서 하드웨어 자원을 분배받아 사용하고 있는데요. 큼직한 프로젝트 많이 따와서 GPU ram 용량이 큰 서버를 구축하고 연구도 수월하게 하는 선순환적인 연구실도 있겠지만 대부분은 거대한 LLM 모델을 수월하게 돌리기 힘들것 같습니다. 저는 시궁창까진 아니더라도 1080ti 한 대를 물려받아 사용중이었습니다만 연구주제가 자연어 쪽이다 보니 커져만 가는 모델사이즈 덕분에 OOM은 기본이고 더이상 실험을 돌려볼 수 조차 없는 상황이 되었습니다 😭 그래서 LLM 연구에서 클라우드 활용은 필수라는 말을 들어서 돈이 좀 들더라... Read More
-
[Effective Python] 제네레이터
이 글은 Effective Python을 참고하여 유용하다고 생각하는 방법을 선정하여 작성한 글입니다. 안녕하세요. jiogenes 입니다. 오늘은 파이썬의 제네레이터(generator)에 대해 알아보겠습니다. 파이썬 제네레이터는 리스트나 튜플과 같은 시퀀스와 달리 한번에 모든 원소들을 메모리에 올리지 않습니다. 예를들어 다음과 같이 리스트 컴프리헨션으로 파일의 모든 라인을 읽어들이는 코드는 파일의 크기에 따라 메모리를 소모하기 때문에 파일 크기가 작을 때는 괜찮지만 파일의 크기가 클 때는 좋지 않은 코드입니다. 1 2 3 4 5 value = [len(x) for... Read More
-
[Effective Python] 리스트 컴프리헨션
이 글은 Effective Python을 참고하여 유용하다고 생각하는 방법을 선정하여 작성한 글입니다. 안녕하세요. jiogenes 입니다. 오늘은 리스트 컴프리헨션(list comprehension; 리스트 함축 표현식)에 대해 알아보겠습니다. 파이썬에는 한 리스트를 통해 다른 리스트를 만드는 리스트 컴프리헨션이라는 간단한 문법이 있습니다. 기본 문법 간단한 예시로 리스트에 있는 각 숫자의 제곱을 계산하고 싶다면 다음과 같이 만들 수 있습니다. 1 2 3 4 5 6 a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] squares = [x ** 2 ... Read More
-
[Effective Python] 시퀀스 슬라이스
이 글은 Effective Python을 참고하여 유용하다고 생각하는 방법을 선정하여 작성한 글입니다. 안녕하세요. jiogenes 입니다. 오늘은 시퀀스 슬라이스의 파이썬 다운 사용방법에 대해 알아보겠습니다. 파이썬은 시퀀스 타입(리스트, 튜플, range, 문자열)을 슬라이스 해서 조각으로 만드는 문법을 제공합니다. 시퀀스 슬라이스를 사용하면 시퀀스의 부분집합에 쉽게 접근할 수 있습니다. 내장된 시퀀스 타입이 아니더라도 __getitem__ 과 __setitem__이라는 매직 메소드를 오버라이딩 한다면 커스텀 객체도 슬라이싱을 할 수 있습니다. 기본 문법 기본적... Read More
-
[인공지능 튜링 테스트에서 딥러닝까지] 최적화
2 최적화 2.1 조합 최적화 2.2 유전 알고리즘 2.3 함수 최적화 2.4 제약조건 최적화 문제 2.5 최소제곱평균법 2.6 경사 하강법 Read More
-
[인공지능 튜링 테스트에서 딥러닝까지] 탐색
안녕하세요. jiogenes입니다. 저번시간에 현재의 인공지능은 특정 문제를 해결하기 위한 도구로 활용된다고 살펴보았습니다. 특정 문제라는 것은 산업에서 일어나는 거창한 문제들도 있지만 우리가 일상에서 맞딱뜨리는 상황들도 모두 문제로 볼 수 있습니다. 가령 갑자기 지도교수님과 미팅을 해야되는 문제가 있을 수 있지요. 또 제안서를 쓰면서 직접비와 간접비 그리고 인건비와 재료비 등을 계산할 때 각각의 항목들을 총액에서 얼마나 분배할지 정하는 문제도 있습니다. 지도교수님과의 미팅 문제는 미팅 주제에 대한 부분을 잘 정리하고 설명할 수 있는 방법을 찾는 탐색으로 해결할 수 있습니다. 과제비 계산 문제는 제약조건을 만족하... Read More
-
[인공지능 튜링 테스트에서 딥러닝까지] 인공지능이란
안녕하세요. jiogenes입니다. 이번 시간에는 본격적으로 인공지능을 공부하기에 앞서 인공지능에 대한 간단한 역사와 최근 동향들을 살펴보겠습니다. 인공지능에 관한 고찰 우리는 인공지능이라는 말을 최근 들어서 굉장히 많이 듣고 사용하고 있지만 막상 인공지능이라는 것을 명확하게 설명하기란 쉽지 않습니다. 우선 인공지능을 설명하기 전에 지능이라는 것이 어떤 것인지 알아야 겠죠? 그렇다면 도대체 지능이라는 것은 무엇일까요? 지능(智能) 또는 인텔리전스(영어: intelligence)는 인간의 지적 능력을 말한다. 지능은 심리학적으로 새로운 대상이나 상황에 부딪혀 그 의미를 이해하고 합리적인 적응 방법을 알아... Read More
-
[인공지능 튜링 테스트에서 딥러닝까지] 시작
안녕하세요. jiogenes입니다. 인공지능을 처음 배우면서 가장 어려웠던 부분이 인공지능의 이론과 역사가 머리속에서 단순하게 그려지지 않았던 부분입니다. 생각보다 아주 긴 역사와 탄탄한 수학적 이론을 가지고 있는 인공지능의 벽은 “컴퓨터 공학에서 프로그램 개발하듯이 문서 읽고 만들다보면 되는거 아냐???” 라고 생각했던 저에게 깊은 좌절감을 느끼게 해주었습니다. 인공지능이라는 말은 제가 학부시절부터 간간히 듣긴 했지만 이렇게 인공지능이라는 분야에 몸을 담아 연구를 하게 될지는 몰랐습니다. 연구를 시작하게 된 계기는 단순히 인공지능 개발자가 멋있어 보였고 아이언맨의 자비스같은 프로그램을 만들어 보고 싶었기 ... Read More
-
블로그 시작
들어가며 안녕하세요. jiogenes 입니다. 주로 머신러닝 및 인공지능에 대한 포스트를 작성할 예정입니다. 논문 리뷰 및 책 리뷰가 대부분일 것 같고 종종 개발과 관련된 포스트도 작성하고 싶습니다. 저는 전직 개발자에서 이제 막 인공지능을 공부하는 입장에서 우선 스스로 공부하기 위한 목적으로 블로깅을 하며, 제가 이해한 것을 바탕으로 모두가 쉽게 이해하는 글을 써 보고 싶습니다. 종종 방문해 주시면 감사하겠습니다. What I cannot create, I do not understand - Richard Feynman Read More