전체 글

전체 글

    [Clean Code] 1장 깨끗한 코드

    프로그래밍은 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업이며, 이렇게 명시한 결과가 바로 코드다.궁극적으로 코드는 요구사항을 표현하는 언어이다. 르블랑의 법칙(leblanc's Law): 나중에 코드를 정리하겠다고 하지만, 나중은 결코 오지 않는다.나쁜 코드가 샇일수록 팀 생산성은 떨어진다.요구사항 변경, 일정 등의 핑계를 대나, 잘못은 전적으로 프로그래머에게 있다.빨리 가는 유일한 방법은 언제나 코드를 최대한 깨끗하게 유지하는 습관이다. 비야네 스트롭스트룹(C++ 창시자)보는 사람에게 즐거움을 선사해야 한다.속도 뿐만 아니라 CPU 자원을 낭비하지 않는 코드오류 없이 세세한 사항까지 꼼곰하게 처리하는 코드한 가지를 잘하는 코드그래드 부치잘 쓴 문장처럼 읽힌다.설계자의 의도를 숨기지 않는다.추..

    Positional Embedding

    Positional Embedding은 BERT에서 토큰의 상대적인 위치를 나타내기 위해 사용하는 방법입니다. Positional Embedding에서는 Sine과 Cosine 함수를 사용합니다. 그 이유는 아래와 같습니다. 입력값에 따라 달라지는 함수값 규칙적으로 증가하거나 감소 입력값의 범위에 대한 제한이 없음 Sine과 Cosine 함수는 항상 -1과 1 사이의 값을 가집니다. 절대적인 위치를 사용할 경우 학습 데이터보다 긴 데이터는 입력할 수 없습니다. Positional Embedding에서는 상대적인 위치를 사용하여 학습데이터보다 긴 데이터도 입력할 수 있습니다. * 출처: https://arxiv.org/abs/1810.04805

    Tuning

    * 이 글은 패스트캠퍼스 [The RED : 프롬프트 엔지니어링, LLM(ChatGPT) 기반의 AI 서비스 개발] 강의를 듣고 작성되었습니다. PEFT 모델의 전체 파라미터를 다 학습시키지 않고 매우 적은 양의 파라미터만 학습하여 빠른 시간 내에 새로운 문제를 거의 비슷한 성능으로 학습시키는 방법 LoRA(Low-Rank Adaptation of Large Language Models) 고정된 weight를 갖는 pretrained model에 학습이 가능한 rank decomposition 행렬을 삽입한 것 행렬의 차원을 r만큼 줄이는 행렬과 다시 원래 크기로 키워주는 행렬의 곱을 이용하여 줄인 행렬의 파라미터만 학습시키는 방법 QLoRA(Efficient Finetuning of Quantized ..