GN⁺: AMD GPU Inference
(github.com/slashml)- 이 프로젝트는 AMD GPU에서 대형 언어 모델(LLMs)을 실행하기 위한 Docker 기반 추론 엔진을 제공
- Hugging Face의 모델과 호환되며, 특히 LLaMA 모델 계열에 중점을 두고 있음
사전 준비
- ROCm 지원이 있는 AMD GPU
- 시스템에 설치된 Docker
- 호스트 시스템에 설치된 ROCm 드라이버(버전 5.4.2 또는 호환 가능)
프로젝트 구조
-
amd-gpu-inference/
-
src/
-
__init__.py
-
engine.py
-
model.py
-
utils.py
-
amd_setup.py
-
-
Dockerfile
-
requirements.txt
-
run_inference.py
-
run-docker-amd.sh
-
README.md
-
빠른 시작
- 이 저장소를 클론함:
git clone https://github.com/slashml/amd-gpu-inference.git cd amd-gpu-inference
- 실행 스크립트를 실행 가능하게 만듦:
chmod +x run-docker-amd.sh
- 지정된 모델과 프롬프트로 추론 엔진을 실행함:
./run-docker-amd.sh "meta-llama/Llama-2-7b-chat-hf" "Translate the following English text to French: 'Hello, how are you?'"
"meta-llama/Llama-2-7b-chat-hf"
를 사용하고자 하는 Hugging Face 모델로 교체하고, 자신의 프롬프트를 제공함.
상세 사용법
Aptfile
프로젝트에는 Docker 컨테이너에 설치해야 할 필수 ROCm 패키지를 나열한 Aptfile
이 포함되어 있음. 이는 추론 엔진이 AMD GPU를 효과적으로 활용할 수 있도록 모든 필수 ROCm 드라이버와 라이브러리를 제공함.
Docker 이미지 빌드
run-docker-amd.sh
스크립트는 Docker 이미지를 자동으로 빌드함. 수동으로 빌드하려면 다음을 사용함:
docker build -t amd-gpu-inference .
컨테이너 실행
run-docker-amd.sh
스크립트는 필요한 AMD GPU 플래그와 함께 컨테이너를 실행함. 수동으로 실행하려면:
docker run --rm -it \
--device=/dev/kfd \
--device=/dev/dri \
--group-add=video \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
amd-gpu-inference "model_name" "your prompt here"
"model_name"
을 사용하고자 하는 Hugging Face 모델로 교체하고, "your prompt here"
를 입력 텍스트로 교체함.
사용자 정의
모델 변경
컨테이너 실행 시 Hugging Face에 있는 모든 모델을 지정할 수 있음. 예를 들어:
./run-docker-amd.sh "facebook/opt-1.3b" "Your prompt here"
추론 로직 수정
추론 방식을 변경해야 하는 경우, run_inference.py
파일을 수정함. 변경 후 Docker 이미지를 다시 빌드해야 함.
문제 해결
- 호스트 시스템에 AMD GPU 드라이버와 ROCm이 올바르게 설치 및 구성되었는지 확인함.
- "메모리 부족" 오류가 발생하면 더 작은 모델을 사용하거나 입력/출력 길이를 줄임.
- 모델 관련 문제는 Hugging Face의 모델 문서를 참조함.
기여
기여는 환영함! Pull Request를 제출할 수 있음.
감사의 글
- 이 프로젝트는 Hugging Face Transformers 라이브러리를 사용함.
- ROCm은 AMD에서 개발함. MIT 라이선스 하에 제공됨. 자세한 내용은 여기에서 확인 가능함.
GN⁺의 정리
- 이 프로젝트는 AMD GPU에서 대형 언어 모델을 실행할 수 있는 Docker 기반 솔루션을 제공함으로써, AMD 하드웨어를 사용하는 개발자들에게 유용함.
- Hugging Face의 다양한 모델과 호환되며, 특히 LLaMA 모델 계열에 중점을 두고 있어, 다양한 자연어 처리 작업에 활용 가능함.
- 이 프로젝트는 AMD의 ROCm 플랫폼을 활용하여 GPU 성능을 극대화하며, Docker를 통해 손쉽게 환경을 설정할 수 있음.
- 비슷한 기능을 가진 프로젝트로는 NVIDIA의 TensorRT나 Google의 TensorFlow Serving 등이 있음.
Hacker News 의견
-
PyTorch와 transformers를 사용하면 대부분의 작업을 수행할 수 있으며, llama.cpp 컴파일도 비교적 쉬운 편임
- Windows에서는 win-hip 바이너리나 Vulkan 빌드를 사용할 수 있음
- ROCm 5.4.2는 오래된 버전이지만, 최근 업데이트된 ROCm 6.2와 RDNA3 호환성을 확인할 수 있음
-
생성된 머신러닝 라이브러리의 증가가 놀라움
- 이 라이브러리는 50%가 print 문으로 구성되어 있으며, 불필요한 분기도 포함되어 있음
-
Ubuntu 24.04에서는 대부분의 AMD GPU에서 llama.cpp를 실행할 수 있음
- 성능은 최적이 아닐 수 있지만 다양한 카드를 테스트했음
- RDNA 3, MI200, MI300 사용자들은 AMD 제공 ROCm 패키지를 사용하는 것이 좋음
-
Ryzen 8700G와 NPU를 사용 중이며, Vulkan을 통해 iGPU 가속을 얻고 있음
- 64GB RAM으로 32GB 이상의 모델을 시도하는 데 문제가 없었음
-
ROCm 5.4.2가 RX 7900 XTX를 지원할지 의문이며, 최신
rocm/pytorch
이미지를 사용하는 것이 더 쉬웠음 -
NixOS 워크스테이션에 필요한 설정을 추가했음
- ROCm 가속을 활성화하고 환경 변수를 설정함
-
AMD ROCm 설치 시 36GB의 공간이 필요하다는 점이 이해되지 않음
-
현재 가장 가성비 좋은 AMD GPU에 대한 질문
- 중고 3090 두 개를 약 $750에 구매했음
-
AMD와 NVidia 그래픽 카드의 가격 비교에 관심이 있다면, 가격을 빠르게 확인할 수 있는 사이트를 제공함
-
ROCm 5.4 대신 최신 버전(6.2)을 사용하지 않는 이유에 대한 질문
- 제공된 Docker 이미지가 성공적으로 빌드되지 않음