4P by neo 2달전 | favorite | 댓글 1개
  • 이 프로젝트는 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

빠른 시작

  1. 이 저장소를 클론함:
    git clone https://github.com/slashml/amd-gpu-inference.git  
    cd amd-gpu-inference  
    
  2. 실행 스크립트를 실행 가능하게 만듦:
    chmod +x run-docker-amd.sh  
    
  3. 지정된 모델과 프롬프트로 추론 엔진을 실행함:
    ./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 이미지가 성공적으로 빌드되지 않음