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 이미지가 성공적으로 빌드되지 않음