SkyPilot로 Qwen 배포하기
SkyPilot로 Qwen 배포하기
SkyPilot은 어떤 클라우드에서든 LLM, AI, 배치 작업을 실행하기 위한 프레임워크로, 최대한의 비용 절감, 최고의 GPU 가용성, 그리고 관리형 실행을 제공해요.
출처: 문서
본문
⚠️ 주의: 이 페이지는 Qwen3 기준으로 업데이트 예정이에요.
SkyPilot이란?
SkyPilot은 모든 클라우드에서 LLM, AI, 배치 작업을 실행하기 위한 프레임워크로, 최대 비용 절감, 최고의 GPU 가용성, 관리형 실행을 제공해요. 주요 특징은 다음과 같아요:
- 여러 리전과 클라우드에 걸친 다중 리소스 풀을 활용해 최고의 GPU 가용성을 확보해요.
- 최소 비용만 지불해요 — SkyPilot이 리전과 클라우드 전반에서 가장 저렴한 리소스를 골라 줘요. 관리형 솔루션 마크업이 없어요.
- 서로 다른 위치와 가속기에 걸쳐 여러 복제본으로 확장하고, 모두 단일 엔드포인트로 서빙해요.
- 모든 것이 여러분의 클라우드 계정 안에 유지돼요 (나의 VM과 버킷).
- 완전히 비공개예요 — 다른 사람이 여러분의 채팅 기록을 보지 못해요.
SkyPilot 설치
SkyPilot 설치 지침을 따르는 것을 권장해요. 여기서는 pip을 사용한 간단한 설치 예시를 보여드릴게요.
# You can use any of the following clouds that you have access to:
# aws, gcp, azure, oci, lamabda, runpod, fluidstack, paperspace,
# cudo, ibm, scp, vsphere, kubernetes
pip install "skypilot-nightly[aws,gcp]"
그 다음 다음 명령으로 클라우드 접근을 확인해야 해요:
sky check
자세한 내용은 공식 문서를 확인하고 클라우드 계정이 올바르게 설정되었는지 살펴보세요.
또는 SkyPilot 마스터 브랜치가 자동으로 클론되는 공식 docker 이미지를 사용할 수도 있어요:
# NOTE: '--platform linux/amd64' is needed for Apple Silicon Macs
docker run --platform linux/amd64 \
-td --rm --name sky \
-v "$HOME/.sky:/root/.sky:rw" \
-v "$HOME/.aws:/root/.aws:rw" \
-v "$HOME/.config/gcloud:/root/.config/gcloud:rw" \
berkeleyskypilot/skypilot-nightly
docker exec -it sky /bin/bash
SkyPilot로 Qwen2.5-72B-Instruct 실행하기
vLLM 기반의 OpenAI 호환 엔드포인트로 serve-72b.yaml에 지정된 목록 중 사용 가능한 GPU로 단일 인스턴스에서 Qwen2.5-72B-Instruct 서빙을 시작하세요:
sky launch -c qwen serve-72b.yaml
실행 전에 YAML 파일에서 Qwen/Qwen2-72B-Instruct를 Qwen/Qwen2.5-72B-Instruct로 바꿔야 한다는 점을 확인하세요.
완성 요청을 엔드포인트로 보내 보세요:
IP=$(sky status --ip qwen)
curl -L http://$IP:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen2.5-72B-Instruct",
"prompt": "My favorite food is",
"max_tokens": 512
}' | jq -r '.choices[0].text'
채팅 완성 요청을 보내 보세요:
curl -L http://$IP:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen2.5-72B-Instruct",
"messages": [
{
"role": "system",
"content": "You are Qwen, created by Alibaba Cloud. You are a helpful and honest chat expert."
},
{
"role": "user",
"content": "What is the best food?"
}
],
"max_tokens": 512
}' | jq -r '.choices[0].message.content'
SkyPilot Serve로 서비스 확장하기
SkyPilot 위에 구축된 서빙 라이브러리인 SkyPilot Serve를 사용하면 Qwen 서비스 확장이 아래처럼 간단해져요:
sky serve up -n qwen ./serve-72b.yaml
실행 전에 YAML 파일에서 Qwen/Qwen2-72B-Instruct를 Qwen/Qwen2.5-72B-Instruct로 바꿔야 한다는 점을 확인하세요.
이렇게 하면 가장 저렴한 위치와 가속기에서 여러 복제본으로 서비스가 시작돼요. SkyServe가 복제본을 자동으로 관리하고, 상태를 모니터링하며, 부하에 따라 자동 스케일링하고, 필요할 때 재시작해 줘요.
단일 엔드포인트가 반환되고, 그 엔드포인트로 보내진 모든 요청은 준비된 복제본으로 라우팅돼요.
서비스 상태를 확인하려면 다음을 실행하세요:
sky serve status qwen
잠시 후 다음 출력을 볼 수 있을 거예요:
Services
NAME VERSION UPTIME STATUS REPLICAS ENDPOINT
Qwen 1 - READY 2/2 3.85.107.228:30002
Service Replicas
SERVICE_NAME ID VERSION IP LAUNCHED RESOURCES STATUS REGION
Qwen 1 1 - 2 mins ago 1x Azure({'A100-80GB': 8}) READY eastus
Qwen 2 1 - 2 mins ago 1x GCP({'L4': 8}) READY us-east4-a
보시다시피 서비스가 이제 2개의 복제본으로 운영되며, 하나는 Azure, 하나는 GCP에 있어요. 가속기 유형은 클라우드에서 가장 저렴한 것을 선택하도록 되어 있어요. 즉, 비용을 최소화하면서 서비스 가용성을 최대화하는 방식이에요.
모델에 접근하려면 curl -L 명령(-L은 리다이렉트를 따라감)을 사용해 엔드포인트로 요청을 보내요:
ENDPOINT=$(sky serve status --endpoint qwen)
curl -L http://$ENDPOINT/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen2.5-72B-Instruct",
"messages": [
{
"role": "system",
"content": "You are Qwen, created by Alibaba Cloud. You are a helpful and honest code assistant expert in Python."
},
{
"role": "user",
"content": "Show me the python code for quick sorting a list of integers."
}
],
"max_tokens": 512
}' | jq -r '.choices[0].message.content'
Chat GUI로 Qwen2.5 접근하기
위에서 실행한 엔드포인트에 FastChat GUI 서버를 연결해 GUI로 Qwen2.5 서비스에 접근하는 것도 가능해요 (gui.yaml 참고).
채팅 웹 UI를 시작하세요:
sky launch -c qwen-gui ./gui.yaml --env ENDPOINT=$(sky serve status --endpoint qwen)
실행 전에 YAML 파일에서 Qwen/Qwen1.5-72B-Chat를 Qwen/Qwen2.5-72B-Instruct로 바꿔야 한다는 점을 확인하세요.
그 다음 반환된 gradio 링크에서 GUI에 접근할 수 있어요:
| INFO | stdout | Running on public URL: https://6141e84201ce0bb4ed.gradio.live
다른 temperature와 top_p 값을 사용하면 더 나은 결과를 얻을 수도 있다는 점을 참고하세요.
요약
SkyPilot을 사용하면 어떤 클라우드에서든 Qwen2.5를 쉽게 배포할 수 있어요. 더 많은 사용법과 업데이트를 위해 공식 문서를 읽어볼 것을 권장해요. 확인해 보세요!