How to deploy and fine-tune DeepSeek models on AWS
Quick Summary
이 글은 Hugging Face 도구를 이용해 DeepSeek R1 계열 모델을 여러 환경에 배포하는 방법과 모델별 하드웨어 구성, 현재 지원되는 기능과 아직 준비 중인 미지원 영역을 정리한 실무 가이드다.
🖼️ 인포그래픽
🖼️ 4컷 인포그래픽
💡 한 줄 요약
이 글은 Hugging Face 도구를 이용해 DeepSeek-R1 계열 모델을 여러 환경에 배포하는 방법과 모델별 하드웨어 구성, 현재 지원되는 기능과 아직 준비 중인 미지원 영역을 정리한 실무 가이드다.
📌 핵심 요약
- DeepSeek는 추론 능력을 강화한 DeepSeek-R1-Zero와 DeepSeek-R1을 공개하고, Llama 및 Qwen 아키텍처를 기반으로 만든 여섯 개의 밀집형 증류 모델도 함께 오픈소스로 배포했다.
- Hugging Face Inference Endpoints에서는 여섯 개 증류 모델과 Unsloth의 양자화된 DeepSeek-R1을 전용 컴퓨팅 환경에 배포할 수 있으며, 자동 확장과 미사용 시 규모를 0으로 줄이는 기능을 제공한다.
- SageMaker AI에서는 JumpStart 또는 Python SDK와 Hugging Face LLM 컨테이너를 이용해 증류 모델을 GPU 엔드포인트로 배포할 수 있고, 모델 크기에 따라 권장 인스턴스와 GPU 수가 달라진다.
- DeepSeek-R1-Distill-Llama-70B는 Neuron용 Hugging Face 컨테이너와 사전 컴파일된 모델을 활용해 SageMaker의 ml.inf2.48xlarge 또는 EC2의 inf2.48xlarge 환경에도 배포할 수 있다.
- 제목에는 미세조정이 포함되어 있지만, 작성 시점에는 Hugging Face Training DLC와 Neuron Deep Learning AMI를 이용한 DeepSeek 모델 미세조정이 아직 준비 중이어서 구체적인 실행 절차는 제공되지 않는다.
🧩 주요 포인트
- DeepSeek는 추론 능력을 강화한 DeepSeek-R1-Zero와 DeepSeek-R1을 공개하고, Llama 및 Qwen 아키텍처를 기반으로 만든 여섯 개의 밀집형 증류 모델도 함께 오픈소스로 배포했다.
- Hugging Face Inference Endpoints에서는 여섯 개 증류 모델과 Unsloth의 양자화된 DeepSeek-R1을 전용 컴퓨팅 환경에 배포할 수 있으며, 자동 확장과 미사용 시 규모를 0으로 줄이는 기능을 제공한다.
- SageMaker AI에서는 JumpStart 또는 Python SDK와 Hugging Face LLM 컨테이너를 이용해 증류 모델을 GPU 엔드포인트로 배포할 수 있고, 모델 크기에 따라 권장 인스턴스와 GPU 수가 달라진다.
- DeepSeek-R1-Distill-Llama-70B는 Neuron용 Hugging Face 컨테이너와 사전 컴파일된 모델을 활용해 SageMaker의 ml.inf2.48xlarge 또는 EC2의 inf2.48xlarge 환경에도 배포할 수 있다.
- 제목에는 미세조정이 포함되어 있지만, 작성 시점에는 Hugging Face Training DLC와 Neuron Deep Learning AMI를 이용한 DeepSeek 모델 미세조정이 아직 준비 중이어서 구체적인 실행 절차는 제공되지 않는다.
🧠 상세 정리
1. DeepSeek-R1의 등장과 공개 모델 구성
글은 어려운 수학 문제를 풀 때 더 오래 생각하고 단계적으로 검토하면 성과가 좋아지는 현상을 언어 모델의 추론 방식과 연결하며 시작한다. OpenAI의 o1은 추론 시 더 많은 연산을 사용하도록 훈련된 모델이 수학, 코딩, 논리 문제에서 크게 향상될 수 있음을 보여줬지만, 그 학습 방식은 공개되지 않았다고 설명한다. 이어 DeepSeek가 DeepSeek-R1-Zero와 DeepSeek-R1을 오픈소스로 공개하면서 추론 모델을 직접 배포하고 활용할 수 있는 새로운 선택지를 제시했다고 소개한다. 공개 범위에는 두 핵심 모델뿐 아니라 DeepSeek-R1의 결과를 Llama와 Qwen 아키텍처에 증류한 여섯 개의 밀집형 모델도 포함되며, 이 모델들은 Hugging Face의 DeepSeek R1 컬렉션에서 확인할 수 있다. 이후 글의 초점은 이 모델들을 실제 환경에 배포하는 여러 경로와 각 경로의 현재 지원 상태를 설명하는 데 맞춰진다.
2. 배포 경로와 지원 범위의 전체 구조
원문은 DeepSeek-R1 계열을 배포하는 경로를 Hugging Face Inference Endpoints, Bedrock Marketplace, SageMaker AI의 Hugging Face LLM DLC, 그리고 EC2의 Hugging Face Neuron Deep Learning AMI로 나누어 설명한다. 다만 모든 경로가 전체 DeepSeek-R1 모델을 동일하게 지원하는 것은 아니며, 실제 예제의 중심은 상대적으로 배포 준비가 잘 된 증류 모델이다. Hugging Face Inference Endpoints에서는 여섯 개 증류 모델과 별도의 양자화 버전을 다루고, Bedrock Marketplace와 SageMaker AI에서는 증류 모델 배포가 제시된다. GPU 환경과 Neuron 환경의 절차도 분리되어 있으며, 각 환경에 맞는 컨테이너 이미지, 인스턴스 유형, 모델 설정값을 사용해야 한다. 전체 DeepSeek-R1의 일부 배포 방식과 모든 DeepSeek 모델의 미세조정은 작성 시점에 준비 중이라고 명시되어 있으므로, 이 문서는 완성된 단일 절차보다는 지원 현황이 갱신되는 실행 문서에 가깝다.
3. Hugging Face Inference Endpoints를 이용한 간편 배포
Hugging Face Inference Endpoints는 전용 컴퓨팅 자원에 머신러닝 모델을 배포하면서 기반 인프라를 직접 관리하지 않도록 설계된 서비스로 소개된다. 모델 페이지에서 Deploy와 HF Inference Endpoints를 차례로 선택하면 최적화된 추론 컨테이너와 권장 하드웨어가 미리 선택된 엔드포인트 생성 화면으로 이동한다. 이 방식은 요청량에 따른 자동 확장, 사용하지 않을 때 자원을 0까지 축소하는 기능, 그리고 운영 환경을 위한 보안 기능을 제공해 배포 절차와 비용 관리를 단순화한다. 지원 대상은 DeepSeek-R1에서 증류된 여섯 개 모델과 Unsloth가 제공하는 양자화 DeepSeek-R1 GGUF 버전이며, 원문은 DeepSeek-R1을 시간당 8.3달러에 질의할 수 있다고 안내한다. 또한 모델 카탈로그에서 DeepSeek 계열과 다른 인기 오픈 언어 모델의 최적화된 구성을 찾을 수 있지만, Inferentia 인스턴스에서의 DeepSeek 배포 지원은 당시 아직 개발 중이다.
4. Marketplace와 SageMaker AI를 통한 증류 모델 배포
Bedrock Marketplace에서는 DeepSeek 증류 모델을 선택해 배포할 수 있으며, 내부적으로는 SageMaker AI 엔드포인트가 생성된다고 설명한다. 원문은 콘솔에서 이 과정을 진행하는 영상을 제공하지만, 세부 코드는 SageMaker Python SDK를 사용하는 다음 절에서 더 구체적으로 다룬다. SageMaker AI에서는 JumpStart를 통한 콘솔 배포와 Python SDK를 통한 프로그램 방식의 배포를 모두 사용할 수 있고, 예제는 DeepSeek-R1-Distill-Llama-70B를 기준으로 전개된다. 반면 전체 DeepSeek-R1을 Hugging Face LLM DLC 기반 GPU 환경에 직접 배포하는 기능은 작성 시점에 준비 중이라고 명시한다. 따라서 이 구간에서 실제 실행 가능한 핵심 대상은 증류 모델이며, 전체 모델과 증류 모델의 지원 범위를 구분해서 이해해야 한다.
5. SageMaker GPU 배포의 준비 사항과 모델별 하드웨어
SageMaker AI에서 GPU 엔드포인트를 만들기 전에는 SageMaker Domain, 충분한 서비스 할당량, JupyterLab 공간을 준비해야 한다. 70B Llama 증류 모델의 예제에서는 엔드포인트용 ml.g6.48xlarge 할당량을 1로 올리도록 안내하며, 이 인스턴스는 복제본당 GPU 8개를 사용하는 권장 구성이다. Qwen 32B와 14B에는 GPU 4개가 포함된 ml.g6.12xlarge가 권장되고, Llama 8B와 Qwen 7B 및 1.5B에는 GPU 1개의 ml.g6.2xlarge가 제시된다. 노트북에서는 최신 SageMaker SDK를 설치한 뒤 현재 리전과 실행 역할을 확인하고, 실행 역할을 자동으로 얻지 못하면 IAM 클라이언트를 통해 지정된 역할의 ARN을 조회한다. 이후 모델 식별자와 사용할 GPU 수를 환경 변수로 전달해 HuggingFaceModel 객체를 만들며, Hugging Face LLM 이미지 버전 3.0.1을 사용한다. 실제 배포 시에는 70B 모델에 ml.g6.48xlarge 한 대와 2,400초의 시작 상태 점검 제한 시간을 설정하고, 생성된 predictor로 질문을 전송해 응답을 확인한다.
6. GPU 엔드포인트 실행과 자원 정리
GPU 예제에서는 모델 이름을 바탕으로 엔드포인트 이름을 만들고 HuggingFaceModel 객체의 deploy 메서드를 호출해 SageMaker 추론 엔드포인트를 생성한다. 엔드포인트가 준비되면 predictor의 predict 메서드에 입력 문장을 전달하는 방식으로 DeepSeek-R1-Distill-Llama-70B의 추론 결과를 요청할 수 있다. 배포된 컨테이너 내부에서는 TGI 버전 3이 사용되며, 주어진 하드웨어에 맞는 성능 관련 매개변수가 자동으로 선택된다고 설명한다. 사용자가 직접 모든 샤딩이나 실행 설정을 결정하지 않아도 되는 점이 이 배포 방식의 핵심 편의성으로 제시된다. 다만 대형 GPU 인스턴스는 테스트가 끝난 뒤에도 계속 실행될 수 있으므로, 원문은 predictor.delete_model과 predictor.delete_endpoint를 호출해 모델과 엔드포인트를 모두 삭제하라고 강조한다. 즉, 배포 성공 확인뿐 아니라 사용 후 자원 제거까지가 예제의 완결된 실행 흐름에 포함된다.
7. SageMaker Neuron 환경에서의 70B 모델 배포
Neuron 배포 예제도 DeepSeek-R1-Distill-Llama-70B를 대상으로 하며, SageMaker Domain과 JupyterLab 공간, 충분한 할당량이 필요하다는 점은 GPU 절차와 같다. 다만 엔드포인트 인스턴스로 ml.inf2.48xlarge를 사용하므로 해당 유형의 기본 할당량을 1로 올려야 하며, 컨테이너도 huggingface-neuronx 버전 0.0.25로 변경된다. 모델 환경에는 Neuron 코어 24개, bf16 자동 형 변환, 최대 배치 크기 4, 최대 입력 토큰 3,686개, 최대 전체 토큰 4,096개가 설정된다. 배포 과정에서는 3,600초의 시작 상태 점검 제한 시간과 512GB 볼륨을 지정하고, 추론 요청에는 샘플링 여부와 최대 생성 토큰, temperature, top-k, top-p 같은 생성 매개변수를 함께 전달한다. 엔드포인트 시작 시간을 줄이기 위해 Hugging Face에서 사전 컴파일된 모델을 내려받아 사용하는 구조이며, 테스트가 끝난 뒤에는 GPU 예제와 마찬가지로 모델 및 엔드포인트를 삭제해야 한다.
8. EC2 Neuron AMI를 이용한 직접 실행
관리형 SageMaker 엔드포인트 대신 EC2에서 직접 실행하는 절차에서는 먼저 Marketplace의 Hugging Face Neuron Deep Learning AMI를 구독해야 한다. 이 AMI에는 Trainium과 Inferentia에서 Hugging Face 모델을 학습하거나 배포하는 데 필요한 의존성이 포함되어 있으며, 원문의 실행 예제는 inf2.48xlarge 인스턴스를 시작하고 SSH로 접속하는 흐름을 전제로 한다. 접속 후에는 neuron0부터 neuron11까지의 장치를 Docker 컨테이너에 연결하고, 배치 크기 4와 시퀀스 길이 4,096, bf16, Neuron 코어 24개를 환경 변수로 설정한다. ghcr.io/huggingface/neuronx-tgi:latest 이미지에 DeepSeek-R1-Distill-Llama-70B 모델 식별자를 전달하면 Hugging Face 캐시에서 컴파일된 모델을 내려받은 뒤 8080 포트에 TGI 엔드포인트가 열린다. 사용자는 curl로 generate 경로에 질문을 전송해 동작을 확인할 수 있으며, 테스트 후에는 EC2 인스턴스를 일시 중지해야 한다. 전체 DeepSeek-R1을 같은 AMI에서 Trainium과 Inferentia에 배포하는 기능은 당시 아직 개발 중이라고 덧붙인다.
9. 미세조정 지원 상태와 문서의 실질적 한계
문서 제목과 목차에는 DeepSeek-R1 모델의 미세조정이 포함되어 있지만, 실제 본문에는 실행 가능한 학습 코드나 데이터 준비 절차가 제시되지 않는다. SageMaker AI의 Hugging Face Training DLC를 사용하는 방식과 EC2 Neuron의 Hugging Face Neuron Deep Learning AMI를 사용하는 방식이 각각 항목으로 등장하지만, 두 항목 모두 모든 DeepSeek 모델의 미세조정 지원을 준비하고 있다는 안내로 끝난다. 따라서 작성 시점에 이 글을 통해 그대로 수행할 수 있는 작업은 주로 증류 모델의 추론 엔드포인트 배포와 테스트이며, 미세조정은 향후 업데이트를 기다려야 하는 영역이다. 댓글에서도 비용 분석이 추가되기를 바라는 의견과 Inferentia에서 4,096개를 넘는 문맥 길이를 사용하기 위한 사전 컴파일 모델 또는 직접 컴파일 지침이 필요하다는 요구가 제기된다. 이는 문서가 기본 배포 경로는 제공하지만 비용 비교, 사용자 정의 컴파일, 더 긴 문맥 설정과 같은 운영상의 세부 문제까지 해결하지는 않는다는 점을 보여준다.
🧾 핵심 주장 / 시사점
- 이 글의 실질적인 중심은 전체 DeepSeek-R1보다 Llama와 Qwen 기반 증류 모델의 배포이며, 경로별로 지원 대상이 다르므로 모델 선택 전에 해당 환경의 지원 상태를 확인해야 한다.
- 관리 부담을 줄이려면 최적화된 컨테이너와 권장 하드웨어가 자동 선택되는 Inference Endpoints나 SageMaker AI가 적합하고, 실행 설정을 직접 통제하려면 EC2의 Neuron Deep Learning AMI 방식이 더 구체적인 제어 지점을 제공한다.
- 대형 모델 배포에서는 모델 코드만큼 인스턴스 할당량, 시작 제한 시간, 토큰 한도, 사전 컴파일 모델의 존재 여부, 테스트 후 엔드포인트나 인스턴스 정리 같은 운영 조건이 중요하게 다뤄진다.
✅ 액션 아이템
- DeepSeek-R1 계열 증류 모델과 Unsloth 양자화 모델을 Inference Endpoints와 SageMaker 배포 경로로 분리해 적용 범위를 정의한다.
- SageMaker 배포 시 JumpStart, Python SDK, Hugging Face LLM 컨테이너를 비교해 모델 크기에 맞는 인스턴스와 GPU 수 기준을 확정한다.
- DeepSeek-R1-Distill-Llama-70B는 Neuron 전용 컨테이너와 사전 컴파일 모델 조건으로 ml.inf2.48xlarge와 EC2 inf2.48xlarge를 시험 대상으로 지정한다.
❓ 열린 질문
- Inference Endpoints의 자동 확장 및 미사용 시 0 스케일 기능을 실서비스에서 어느 임계값 기준으로 운영할 것인가?
- JumpStart 기반 배포와 Python SDK 기반 배포 중 DeepSeek 증류 모델의 크기 증가 구간에서 실패 가능성이 낮은 흐름은 어디인가?
- 미세조정 기능이 미지원인 상태에서 Hugging Face Training DLC와 Neuron Deep Learning AMI 공개 시 배포 전략을 어떻게 보완할 것인가?