TGI 빠른 둘러보기 (Quick Tour)
TGI 빠른 둘러보기 (Quick Tour)
TGI를 처음 써보려면 어떻게 시작하는 게 좋을까요? 가장 빠른 길은 공식 Docker 컨테이너를 쓰는 거예요. 별도로 소스를 빌드할 필요 없이, GPU가 달린 머신에서 컨테이너 하나 띄우면 바로 모델 서빙을 시작할 수 있어요. 이 글에서는 원하는 모델을 Docker로 실행하고, 그 다음에 어떻게 요청을 보내는지까지 한 흐름으로 따라가 볼게요.
TGI 실행하기
예를 들어 teknium/OpenHermes-2.5-Mistral-7B 모델을 Nvidia GPU에서 TGI로 서빙한다고 생각해 볼게요. 먼저 Docker를 설치한 뒤, 아래처럼 실행하면 돼요.
model=teknium/OpenHermes-2.5-Mistral-7B
volume=$PWD/data # share a volume with the Docker container to avoid downloading weights every run
docker run --gpus all --shm-size 1g -p 8080:80 -v $volume:/data \
ghcr.io/huggingface/text-generation-inference:3.3.5 \
--model-id $model
몇 가지 살펴볼 점이 있어요. -p 8080:80은 호스트의 8080 포트를 컨테이너의 80 포트로 연결해 주고, -v $volume:/data는 볼륨을 공유해 매번 가중치를 다시 내려받는 일을 피하게 해 줘요. --shm-size 1g는 공유 메모리 크기를 정하는 옵션이에요. 만약 게이트(gated) 모델이나 비공개 모델을 서빙하려면 별도의 가이드를 참고해야 해요.
지원 하드웨어
TGI는 다양한 하드웨어를 지원해요. Nvidia GPU, AMD GPU, Intel GPU, Intel Gaudi, AWS Inferentia에 각각 맞는 설치 가이드가 따로 있으니, 배포하려는 하드웨어에 따라 그에 맞는 문서를 확인하면 돼요.
TGI 사용하기
서버가 떠 있는 동안에는 generate 엔드포인트나 OpenAI의 Chat Completion API와 호환되는 Messages API로 요청을 보낼 수 있어요. 아래는 generate 엔드포인트에 간단히 요청하는 Python 예시예요.
import requests
headers = {
"Content-Type": "application/json",
}
data = {
'inputs': 'What is Deep Learning?',
'parameters': {
'max_new_tokens': 20,
},
}
response = requests.post('http://127.0.0.1:8080/generate', headers=headers, json=data)
print(response.json())
# {'generated_text': '\n\nDeep Learning is a subset of Machine Learning that is concerned with the development of algorithms that can'}
같은 요청을 cURL로 보내면 아래처럼 표현할 수 있어요.
curl 127.0.0.1:8080/generate \
-X POST \
-d '{"inputs":"What is Deep Learning?","parameters":{"max_new_tokens":20}}' \
-H 'Content-Type: application/json'
배포 옵션 확인하기
컨테이너에 사용할 수 있는 배포 플래그와 옵션을 전부 보고 싶다면 --help 플래그를 쓰면 돼요. 샤드(shard) 수, 양자화, 생성 파라미터 등을 여기서 확인하고 조절할 수 있어요.
docker run ghcr.io/huggingface/text-generation-inference:3.3.5 --help