GPUTraining & View
-
[yongggg's] ray 분산처리GPUTraining & View 2025. 5. 22. 14:48
안녕하세요~! 오늘 장에서는 대용량의 데이터를 ray로 분산처리하여, 기존 방법보다 훨씬 빠르게 전처리나 추론할 수 있는 방법에 대해 다루고자 합니다. parsing task를 겪으면서, 단순히 inference 코드로 여러 파일들을 sequential 하게 parsing을 하게되면,parsing 속도가 매우 저조하여 이를 현실 업무에서 사용할 수 없는 문제를 해결하고자 했습니다. 간단히 ray를 적용하면, 이런 문제를 해결할 수 있습니다! 1. ray module 설치ray를 이용하기 앞서, module을 설치해야 합니다. 각자 서버에서 다음 코드를 통해 Module을 설치하실 수 있다.pip install raypip install ray[default]2. ray startray module을 설치..
-
[yongggg's] DeepSpeed + Zero 둘러보기GPUTraining & View 2024. 4. 25. 10:02
안녕하세요 이번 장에서는 효율적인 Deep Learning training 툴인 Deepspeed에 대해 간단히 살펴보겠습니다.간략하게 핵심부터 말씀드리자면, GPU에 모델 학습 parameter를 복제하는 기존의 비효율 시스템을 효율적으로 구동할 수 있도록 만든 framework라고 할 수 있습니다. 아래는 DeepSpeed + Zero와 그렇지 않은 모듈의 GPU 사용량 및 여러 장점들을 나타냅니다.지금부터 짧게 DeepSpeed + Zero에 대해 설명하겠습니다.1. Introduction현재 딥러닝 trend가 LLM으로 들어오면서, 해당 모델의 크기는 점점 커지며 좋은 데이터, 큰 모델의 시너지는 굉장히 powerful하다는 것이 입증되고 있다. 모델의 두 가지 조건 중에서 큰 모델의 학습은 점..
-
[yongggg's] FSDP details and optionsGPUTraining & View 2024. 3. 13. 11:22
Getting Started with Fully Sharded Data Parallel(FSDP) fsdp_auto_wrap_policy: FSDP에 fsdp_auto_wrap_policy를 적용하지 않는다면, FSDP는 전체 모델을 하나의 FSDP 단위에 배치하므로 계산과 메모리 효율성이 저하된다. 모델에 100개의 선형 레이어가 포함되어 있는 상황을 가정해보자. FSDP함수로 FSDP(model)을 수행하면, 전체 모델을 래핑하는 FSDP 단위가 하나만 있게 된다. 이 경우에 allgather step에서는 100개의 선형 레이어 모두에 대한 전체 parameter를 수집하므로 parameter sharding을 위해 CUDA 메모리를 절약하지 않는다. 또한 100개의 모든 선형 레이어에 대해 단 하..
-
[yongggg's] FSDP: Fully Sharded Data ParallelGPUTraining & View 2024. 2. 6. 14:03
안녕하세요 이번 장에서는 LLM의 등장으로 모델 학습의 어려움이 커지면서 DDP의 병렬 분산 처리 학습으로 담을 수 없는 큰 모델을 학습하기 위한 방법인 Fully Sharedd Data Parallel(이하 FSDP)에 대해 설명을 드리겠습니다. 원문은 아래에 있으니, 아래를 참고하시는 것도 추천합니다! https://engineering.fb.com/2021/07/15/open-source/fsdp Large AI 모델을 쉽게 학습하기 위한 infra로는 intra-layer model parallelism, pipeline model parallelism, optimizer state+gradient sharding, and mixture of experts 등의 방법이 있습니다. 이 중에서 아래 ..
-
[yongggg's] DDPGPUTraining & View 2023. 12. 14. 11:17
안녕하세요 이번 장에서는 one node / multi gpu 환경에서 Distributed Data Parallel 기술 구현의 방법에 대해 설명하고자합니다. 이 장에서는 기본적으로 본인이 직접 모델 custom을 할 수 있는 정도가 되어야 이해하시기 편하실 겁니다. 먼저 DDP를 구동하기 위해서는, 여러 개의 GPU가 제대로 인식되는 지 확인을 하셔야합니다. Nvdi-smi nvcc -V 등의 명령어로 먼저 장비가 GPU를 잘 인식하고 있는지 확인합니다. 맥북을 쓰는 저의 경우에... 메모장에 CUDA_VISIBLE_DEVICES='0,1,2,3,4,5,6,7'를 복사했는데 따옴표가 바뀌어서 저장이되는 경우도 있었습니다.... 따옴표 기호가 맥북의 따옴표 기호로 들어가서 정상적으로 인식이 안돼서 오류..
-
[yongggg's] Big-size image dataset load TipGPUTraining & View 2023. 2. 1. 14:44
폴더 안에 이미지가 있을 때, 모든 이미지를 로드하면 gpu 및 ram이 터진다. 아래와 같이 dataset을 구성하면 좋다. class MyDataset(torch.utils.data.Dataset): def __init__(self, file_x,: str file_y: str) -> None: super().__init__() # file won't be loaded with mmap_mode != None self.file_x = np.load(file_x, mmap_mode='r') self.file_y = np.load(file_y, mmap_mode='r') def __getitem__(self, idx: int) -> Tuple[torch.Tensor, torch.Tensor]: retur..
-
[yongggg's] 서버에 딥러닝 환경 설치하기 (Ubuntu 20.04)GPUTraining & View 2022. 11. 24. 10:16
안녕하세요 이번에는 새로운 서버 장치 하나를 받았을 때, 어떻게 환경을 세팅하면 되는지에 대해 설명을 해드리도록 하겠습니다. 개발환경은 linux 서버를 기준으로 GPU를 사용할 수 있도록 하는 환경 세팅의 내용입니다. 저는 ubuntu 20.04 기준으로 설명을 드릴텐데, 중간 중간 버전이 다른 경우를 잘 확인하면서 검색을 통해 부분만 갈아끼워 설치하시면 됩니다! ㅎㅎ 1) Ubuntu 설치 GUI가 지원되는 버전 혹은 서버 버전의 ubuntu 20.04 를 설치한다. 2) SSH 설정 (로컬에서 터미널로 서버 접근을 위함) sudo apt-get update sudo apt-get install ssh sudo service ssh start SSH가 제대로 실행 중인지 확인을 한다. sudo sys..
-
[yongggg's] Nvidia-smi(Failed to initialize NVML: Driver/library version mismatch)GPUTraining & View 2022. 8. 16. 10:27
lsmod | grep nvidia 안녕하세요 이번 시간에는 GPU 모니터링(nvidia-smi) 중, "Failed to initialize NVML: Driver/library version mismatch"라는 문구의 오류를 해결하는 방법에 대한 글을 작성하려고 합니다. gpu 메모리를 얼마나 쓰고 있는지, 몇 % 효율로 사용하고 있는지를 확인하기 위해서 nvidia-smi 명령어를 치고 있습니다. 이 때, 위 같은 오류가 나오면, 답답하더라구요... ㅎㅎ 이 문제의 원인은... 서버를 같이 쓰고 있는 누군가 cuda의 버전을 업데이트 했었는데, 이 이후 부터 이런 오류들이 자주 출력되어서 원인이 cuda version의 업데이트가 아닌가 생각하고 있습니다. 그래서! 다음과 같이 일시적인 해결 방법..