- AMD GPU에서 대규모 언어 모델을 실행하기 위한 Docker 기반 추론 엔진으로, Hugging Face 모델을 대상으로 하며 LLaMA 계열에 초점을 둠
- 실행 환경은 ROCm 지원 AMD GPU, Docker, 호스트에 설치된 ROCm 드라이버 5.4.2 또는 호환 버전을 필요로 함
run-docker-amd.sh가 Docker 이미지를 자동으로 빌드하고, AMD GPU 접근에 필요한 /dev/kfd, /dev/dri, video 그룹, SYS_PTRACE, seccomp=unconfined 설정으로 컨테이너를 실행함
- 사용자는 Hugging Face 저장소 이름과 프롬프트를 인자로 전달해 모델을 바꿀 수 있으며, 예시로
meta-llama/Llama-2-7b-chat-hf와 facebook/opt-1.3b가 제시됨
- 추론 동작을 바꾸려면
run_inference.py를 수정한 뒤 Docker 이미지를 다시 빌드해야 하며, 메모리 부족 시 더 작은 모델이나 짧은 입출력 길이를 사용해야 함
프로젝트 목적과 대상 모델
- 이 프로젝트는 AMD GPU에서 LLM을 실행하기 위한 Docker 기반 추론 엔진임
- Hugging Face의 모델을 사용하도록 설계됐으며, 특히 LLaMA 모델 계열에 초점을 둠
- Hugging Face Transformers 라이브러리를 사용함
요구 환경
- 실행 전 필요한 조건은 다음과 같음
- ROCm을 지원하는 AMD GPU
- 시스템에 설치된 Docker
- 호스트 시스템에 설치된 ROCm 드라이버
프로젝트 구성
- 저장소 구조는
src/ 디렉터리와 실행·빌드 파일로 구성됨
src/engine.py
src/model.py
src/utils.py
src/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 모델로 바꿀 수 있고, 프롬프트도 직접 지정할 수 있음
Docker와 ROCm 실행 방식
Aptfile에는 Docker 컨테이너 안에 설치할 ROCm 패키지가 나열됨
- 필요한 ROCm 드라이버와 라이브러리를 컨테이너에서 사용할 수 있게 하기 위한 구성임
run-docker-amd.sh는 Docker 이미지를 자동으로 빌드함
- 수동 빌드는 다음 명령으로 가능함
docker build -t amd-gpu-inference .
- 컨테이너를 수동 실행할 때는 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이 호스트 시스템에 올바르게 설치·구성됐는지 확인해야 함
"out of memory" 오류가 발생하면 더 작은 모델을 사용하거나 입력·출력 길이를 줄여야 함
- 모델별 문제는 Hugging Face의 해당 모델 문서를 참조해야 함
라이선스와 참고
- 프로젝트는 기여를 Pull Request로 받을 수 있음
- ROCm은 AMD가 개발했으며 MIT License로 제공됨
- 질문이나 이슈는 GitHub 저장소의 이슈로 열 수 있음