본문 바로가기

전체 글23

Step-Back Prompt Engineering https://arxiv.org/pdf/2310.06117.pdf # 개요 LLM (Large Language Model) 의 상승세와 함께 LLM을 활용한 Application에 대한 관심도가 증가하고 있다. 이와 함께 등장한 하나의 중요한 키워드가 Prompt Engineering 이다. 여기에서 "프롬프트"는 LLM에게 특정 작업을 수행하도록 요청하는 "자연어 텍스트" 라고 정의할 수 있다. 이 프롬프트를 어떻게 설계하느냐가 LLM 모델의 출력 품질에 결정적인 영향을 끼지며 효과적인 프롬프트 설계는, 모델이 사용자의 의도를 정확하게 파악하고, 맥락에 맞는 유용한 답변을 생성할 수 있도록 한다. 위 그림은 프롬프트가 무엇인지 이해하기 제일 쉬운 사진이라고 생각된다. 사용자의 질문은 프롬프트가 되며 L.. 2024. 4. 9.
Parameter Efficient Fine-Tuning(PEFT) 개요 LLM 을 새롭게 원하는 도메인의 데이터를 사용하여 학습하고자 할 때 가장 큰 문제는 GPU의 VRAM 용량입니다. LLM은 성능을 위해서 이름 그대로 큰 모델을 사용하게 되는게 일반적이다보니 이 모델을 그대로 VRAM에 올려서 fine-tuning을 하려면 최소한 24G 이상의 VRAM이 필요하게 됩니다. 문제는 이렇게 큰 모델 전체의 파라미터들을 재학습하기 위해서는 VRAM 도 VRAM 이지만 학습 시간도 오래 걸릴 뿐 아니라 생각보다 데이터의 량, 상태 등에 따라서 수렴도 어렵다는 문제가 있습니다. 이러한 문제들을 해결하기 위해서 최근에 많은 방법들이 발표되고 있지만 이런 연구들의 가장 기반이 되는 Parameter Efficient Fine-Tuning(PEFT)에 대해서 먼저 알아보려고 합.. 2024. 1. 18.
[Optimization] Gradient Descent, Stocastic Gradient Descent, NAG, RMSPro, Adam 1) Gradient Descent parameter 를 반복적으로 objective 의 gradient 를 이용해서 update 하는 방법. 주어진 데이터 D를 사용해서 objective 가 optimal value에 도달할 수 있도록 점진적으로 update를 수행. (ex) Linear regression Step 1. objective L(theta) 를 parameter theta에 대해서 미분을 수행 Step 2. theta 를 gradient 의 반대 방향으로 update. (f_theta = th_1 * x_1 + th_2 * x_2 + ... + th_j * x_j + ... + th_N * x_N 이므로 뒤에 x_j가 남게됨) 그러나, Gradient Descent 방법은 N 개의 샘플이.. 2022. 6. 15.
[Activation Functions] ML 모델을 연구하고 실제 프로덕트 개발을 위해서 모델링을 하는 과정에서 퍼포먼스 향상을 위해 아키텍쳐 서치를 굉장히 많이하게 됩니다. 최근 Diffusion Model을 기반으로 ML 프로덕트를 만드는 경험을 하였는데, 실제로 UNet 기반의 아키텍쳐에서 activation function은 생각보다 중요하게 퍼포먼스에 영향을 주게 되었습니다. (Normalization 방법도..!) 이번 포스팅에서는 이런 중요한 activation function에 대해서 정리하는 시간을 가져보려고 합니다. 저는 주로 제가 공부한 걸 정리하고 나중에 끄집어 내기 위해서 글을 쓰는 편인데, 누군가 검색하였을 때 keyword라도 던져서 도움이 될 수 있기를 바라며 글을 씁니다! # 간단히 ML 모델을 학습한다는 것의 .. 2022. 6. 9.
[Normalization Techniques] 2탄 Decomposing Normalization 앞선 포스팅에서 다루었던 NORMALIZING ACTIVATIONS AS FUNCTIONS 의 Batch Normalization 은 굉장히 많이 사용되고 있는 Normalization techniques 중 하나입니다. 하지만 아래의 2가지 문제점이 크게 있다고 말씀드렸었는데, 이를 해결하기 위한 새로운 normalization techniques 가 등장하였고 좋은 성능을 보여주고 있습니다. inference시에 operation이 다르게 작동하여 performance에 불안정성이 존재 small batch size를 사용하는 경우 학습과정 및 inference시에 error가 큼 (input data에 대한 mean & std 가 mini-batch 단위로 수행되어 학습에 사용됨) 실제로 최근에 주.. 2022. 5. 30.
[Normalization Techniques] ML 기술들이 발전함에 따라서 가장 많이 변한 부분 중 하나는 normalization 기술이라고 생각합니다. 최근 ML Computer Vision 분야에서 프로덕트화 해야하는 일을 하고 있는데 1%의 성능이라도 소중하다 보니 찾아보고 적용해보면서 생각보다 퍼포먼스에 큰 영향을 주는 부분이라는 것을 깨닳아서 이렇게 정리하게 되었습니다. # 개요 normalization 기술을 정리함에 있어서 기술들의 유사한 부분과 차이가 있는 부분들을 정리하는 것이 제일 이해하기도 쉽고 사용할 때 필요한 기술을 선택하기도 쉽다고 생각합니다. 이 글에서는 이 부분들을 중점적으로 정리해보고자 합니다. cvpr 2021 에서 굉장히 좋은 survey 논문이 있어서 이 논문을 정리하는 식의 포스팅이 될 것 같습니다. # 논문.. 2022. 5. 30.
[ML] Rejection Sampling 잡담 오늘은 Distribution Fit에 대해서 오랜만에 글을 정리해보려고 합니다. ML 내용은 아니지만 최근 MLOps 스터디와 여러 프로젝트들을 수행하면서 모델 적 접근도 중요하지만 Data의 정제와 분석이 훨씬 더 중요하다는 생각이 들어서 이런 공부를 더 많이하는 것 같습니다. 최근 Coursera에서 Andrew Ng 교수님의 ML Ops 강의를 PseudoLab 분들과 함께 공부하고 있는데 회사에서 겪는 일들에 대해서 다시한번 개념적 정의를 할 수도 있고 "모델 < 데이터" 의 중요도에 대해서 느끼고 있던 차에 강의에서도 다시 짚어줘서 재밌는 경험을 하고 있습니다. 위는 ML Ops의 cyclic process 에 대한 그림인데 Data 와 관련된 분석 이후에는 모든 단계에서 Data로 다시.. 2021. 12. 16.
[ML] Normalizing Flow 완전 분석 (RealNVP) Introduction PytorchTS는 Gluon-TS를 기반으로 Pytorch로 구현된 time series를 전문적으로 다루는 오픈 소스 입니다. 제법 다양한 시계열을 위한 ML 모델들을 담고 있어서 실제로 논문을 보고 구현할 때 많은 도움을 받고 있습니다. 제가 이전 포스팅 중에서 RealNVP의 image net 버전을 올렸었는데, 시계열 데이터를 위한 모델이 PytorchTS에 있어서 오늘은 코드에 대해서 자세히 살펴보면서 간간히 이론도 다시 정리하는 시간을 가져볼 것 같습니다. 저도 코드를 보면서 공부할 겸, 시계열 모델에 대한 정보는 잘 없다보니 누군가 보고 도움이 되었으면 해서 포스팅을 하게 되었습니다. Code 기본적으로 PytorchTS는 TrainingNetwork와 Predict.. 2021. 12. 16.
[ML Engineer 지식 공부] 기본지식 공부해보기 [1] 이번 포스팅에서는 제가 자주 찾아보는 카일스쿨 https://zzsza.github.io/data/2018/02/17/datascience-interivew-questions/ 블로그에서 나온 면접 질문들에 해당하는 내용에 대해서 공부해보고 정리를 해서 남겨두려고 합니다. 처음에는 다 알고 있다고 생각했는데 얼핏 알기만 하고 막상 누가 물어보면 대답을 제대로 할 수 없을 것 같은 것들이 많아서 블로그로 정리하면서 공부를해야겠다는 생각이 들어서 포스팅을 하게 되었네요. 같이 공부하고 댓글로 틀린 것들이 있으면 남겨주시면 좋겠습니다 :) 통계 및 수학 고유값(eigen value)와 고유벡터(eigen vector)에 대해 설명해주세요. 그리고 왜 중요할까요? 행렬 A를 선형변환으로 봤을 때, 자기 자신에 .. 2021. 12. 16.