AI/DL Frameworks 12

[Huggingface] Single GPU에서 효율적인 모델 학습을 하는 방법

원문 허깅페이스 - https://huggingface.co/docs/transformers/en/perf_train_gpu_one 모델 수렴과 GPU메모리를 고려하여 단일 GPU에서 메모리를 최적화하는 방법에 대해 HF에서 정리한 문서이다! 대규모 모델을 학습할 때에는 다음의 두 가지 측면을 고려해야 한다: (1) 데이터 throughput 혹은 학습 시간 (2) 모델 성능 초당 학습 샘플 개수로 측정되는 throughput을 극대화하는 것은 학습 비용을 낮추는 것으로 연결된다. 일반적으로 GPU를 최대한 많이 사용하고, GPU 메모리를 그 한계까지 사용함으로써 이를 달성할 수 있다. 만약 배치사이즈가 GPU 메모리를 초과하면, gradient accumulation과 같은 메모리 최적화 방법을 사용할..

AI/DL Frameworks 2024.03.10

[Huggingface] 모델 학습 시 GPU 메모리 사용 알아보기

원문 허깅페이스 - https://huggingface.co/docs/transformers/en/model_memory_anatomy 모델 학습 도중 GPU는 어떤 방식으로 활용되는가 모델 학습 속도와 메모리 활용의 효율성을 증대하기 위한 최적화 기법을 이해하기 위해, ①학습 도중 GPU가 어떤 식으로 활용되며 ②수행하는 작업에 따라 계산 강도가 어떻게 달라지는지 이해할 필요가 있다. Step-by-step 메모리 확인 가이드는 아래 huggingface 가이드에 있는 코드를 따라 해 보면 된다. https://huggingface.co/docs/transformers/en/model_memory_anatomy Pytorch를 통해 모델을 로드하고, 학습하는동안 GPU 사용률을 관찰해 보면 아래와 같이..

AI/DL Frameworks 2024.03.08

LangChain | WebResearchRetriever을 활용하여 RAG (Retrieval Augmented Generation) 구현하기

지난 포스트에서는 LangChain을 활용하여 5세 아이의 단어공부를 도와주는 간단한 어플리케이션 코드를 작성해 보았다. 2023.08.16 - [AI] - LangChain이란? | 파이썬으로 LangChain 시작하기 LangChain이란? | 파이썬으로 LangChain 시작하기 참고문서: https://python.langchain.com/docs/get_started/quickstart.html 실습파일: LangChain이란? LangChain은 언어모델, 특히 대규모 언어모델(LLM)을 활용하여 구동하는 애플리케이션을 개발하기 위한 프레임워크 littlefoxdiary.tistory.com 이처럼 자유롭거나 창의적인 Open-World 질문에 대해서는 대규모 언어모델이 다소 창의적이거나 좋은..

AI/DL Frameworks 2023.08.27

LangChain이란? | 파이썬으로 LangChain 시작하기

참고문서: https://python.langchain.com/docs/get_started/quickstart.html 실습파일: LangChain이란? LangChain은 언어모델, 특히 대규모 언어모델(LLM)을 활용하여 구동하는 애플리케이션을 개발하기 위한 프레임워크로, ● Data-aware: 언어 모델을 다른 데이터 소스와 연결하거나 ● Agentic: 언어 모델이 환경과 상호작용할 수 있도록 하는 애플리케이션 개발을 지원한다. 최근의 Large Language Model(LLM)은 뛰어난 맥락 이해 능력을 보이며, 일반적인 상황에서 인간과 자연스럽게 상호작용하는 것과 같이 행동한다. 하지만 도메인 지식이나 전문성이 필요한 태스크에 대해서는 구체적이고 유효한 답변을 제공하지 않을 수 있다. 예..

AI/DL Frameworks 2023.08.16

[TensorFlow] Callback 사용하기 - 커스텀 콜백 / 모델 학습 / 평가

🙋‍♀️ Callback은 모델 학습 중 호출할 수 있는 기능을 의미한다. 🙋‍♀️ tf.keras.callbacks에는 함수가 구현되어 있으며, 직접 필요한 기능을 구현해 사용하는 것도 가능하다. Callback Classes 기본 Callback 관련 클래스 Callback 베이스 클래스로부터 새로운 콜백을 만들 수 있는 클래스 LamdaCallback 간단한 커스텀 콜백을 on-the-fly로 생성할 수 있는 콜백 CallbackList 콜백의 리스트를 추출할 수 있는 컨테이너 Logging 관련 클래스 BaseLogger 에포크별로 metric의 평균을 축적하는 콜백 CSVLogger 결과를 CSV 파일로 스트리밍하는 콜백 ProgbarLogger metric을 stdout으로 프린트하는 콜백 R..

AI/DL Frameworks 2021.06.28

[TensorFlow] Vision Modeling(2) Transfer Learning

🙋‍♀️ tf.keras.applications 모듈에서 사전학습된 모델 불러와 fine-tuning하기 🙋‍♀️ Layer freezing / unfreezing 구현하기 TensorFlow에서 전이학습하기 From-scratch training vs Transfer Leraning ▶ From-scratch 학습 이전 글에서는 CNN 아키텍처를 만들어 TensorFlow에서 이미지 분류 모델을 학습하는 방법을 공부했다. 내가 디자인한 모델은 학습 데이터셋을 통해 weight를 조절하며 최종 태스크를 수행할 수 있는 representation을 학습하였다. 이렇게 모델의 파라미터를 랜덤하게 초기화하고, 데이터에 대해 모델을 학습시키는 것을 from-scratch 학습이라고 한다. ▶ Transfer L..

AI/DL Frameworks 2021.06.27

[TensorFlow] Vision Modeling(1) MNIST 태스크 모델링하기

🙋‍♀️ TensorFlow Conv2D와 MaxPooling2D layer을 익히고, 모델을 만들어 학습하기 1. TensorFlow Conv2D TensorFlow Conv2D> https://www.tensorflow.org/api_docs/python/tf/keras/layers/Conv2D tf.keras.layers.Conv2D( filters, kernel_size, strides=(1, 1), padding='valid', data_format=None, dilation_rate=(1, 1), groups=1, activation=None, ... ) filters : 아웃풋 차원 수 kernel_size : 2d ConV 윈도우의 height & width 설정 strides : stri..

AI/DL Frameworks 2021.06.06

[TensorFlow] 텐서플로우 2.0 기본 - Sequential & Functional API

🙋‍♀️ TensorFlow Sequential API와 Functional API를 사용해 모델 구조를 만들고 학습하기 0. Sequential vs Functional API Sequential API 레이어의 흐름이 순차적인 경우 사용 (layer-by-layer) 텐서가 이전 레이어에서 다음 레이어로 바로 이어질 때에 사용 가능 Functional API Sequential API보다 유연한 API로 다음의 기능을 사용할 수 있음 여러 개의 input을 받거나 여러 개의 output을 내야 하는 경우 Layer을 공유하는 경우 (샴 네트워크 등....) Residual Network 구현 1. 태스크 이해하기 : MNIST 데이터 분류 - 손으로 쓴 0-9 사이의 숫자 이미지를 인풋으로 받아 숫자..

AI/DL Frameworks 2021.06.06

토치서브(TorchServe) - 파이토치 배포를 위한 모델 서비스 프레임워크 공개

Pytorch 파이토치는 간결하면서 '파이썬스러운' 문법과 그래프 모드의 유연성으로 인해 AI 알고리즘 연구자들이 대대적으로 선호해 온 머신러닝 프레임워크이다. 텐서플로우에서 케라스를 래핑한 TensorFlow2.0을 발표하며 개발의 용이성을 강조했을 때에도 "우리 연구실 학생들이 파이토치에서 갈아탄다면 텐플이 쉽다는 걸 인정하겠네 "라는 meme이 돌았을만큼 파이토치를 사용한 모델 개발과 실험은 매우 쉽다! 그러나 파이토치로 개발된 모델을 비즈니스 레벨로 디플로이하는 것은 쉽지 않았다. 대규모 추론 환경에서 프로덕션 레벨로 모델을 배포하기 위해서는 안정적인 다중 응대 뿐만 아니라 모델 관리, 보안, 모니터링 등 필요한 기능이 많기 때문이다. 이러한 모델 베포 프로세스를 단순화할 수 있는 방법 중 하나가..

AI/DL Frameworks 2020.04.28

TensorFlow Extended (TFX) - 프로덕션 레벨의 E2E 기계학습 파이프라인 플랫폼 / Cloud Google AI Pipelines

TensorFlow Extended (TFX) " 전체 머신러닝 시스템을 정의하고 배포, 모니터링할 수 있는 일련의 요소를 모두 갖춘 TensorFlow 기반 머신러닝 플랫폼" - TFX의 목표는 구글에서 머신러닝 제품을 안정적으로 할 수 있는 플랫폼을 만드는 것이었음 - 따라서 TFX는 구글 프로덕트 수준의 scalability가 확보된 라이브러리라고 할 수 있음 (scalable production scale) - 구글의 software engineering + ML development 기술이 집약된 플랫폼 TFX 파이프라인 일련의 기계학습 태스크를 수행하기 위해서는 모델 정의부터 프로덕션 레벨의 문제까지 복잡한 문제들을 고려해야 함. - 데이터 준비 과정에서는 > 준비된 데이터의 통계량을 검진, ..

AI/DL Frameworks 2020.03.17