> ## Documentation Index
> Fetch the complete documentation index at: https://docs.baeum.ai.kr/llms.txt
> Use this file to discover all available pages before exploring further.

# TGI (Text Generation Inference)

HuggingFace에서 개발한 **LLM 추론 서버**입니다. HuggingFace 모델 허브와 긴밀하게 통합되어 있으며, Flash Attention, 양자화 등 최적화 기술을 지원합니다.

## 어디에 쓰이나요?

* **HuggingFace 모델 서빙**: HuggingFace Hub의 모델을 바로 API로 서빙
* **텍스트 생성 API**: OpenAI API 호환 형식으로 챗봇, 텍스트 생성 서비스 구축
* **스트리밍 응답**: Server-Sent Events(SSE) 기반의 실시간 토큰 스트리밍
* **프로덕션 배포**: HuggingFace Inference Endpoints의 백엔드로 사용되는 검증된 엔진

<Warning>
  **NVIDIA GPU가 필수**입니다. GPU가 없는 환경에서는 실행되지 않습니다.
</Warning>

## Docker Compose

```yaml docker-compose.yml theme={null}
services:
  tgi:
    image: ghcr.io/huggingface/text-generation-inference:latest
    container_name: tgi
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - tgi_data:/data
    environment:
      - HUGGING_FACE_HUB_TOKEN=${HF_TOKEN}
    command: >
      --model-id meta-llama/Llama-3.1-8B-Instruct
      --max-input-tokens 4096
      --max-total-tokens 8192
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

volumes:
  tgi_data:
```

## 실행

```bash theme={null}
docker compose up -d
```

모델 다운로드 후 서버가 시작됩니다. 로그로 진행 상태를 확인합니다.

```bash theme={null}
docker compose logs -f tgi
```

## 접속 확인

```bash theme={null}
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "meta-llama/Llama-3.1-8B-Instruct",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'
```

## 기본 정보

| 항목     | 값                                |
| ------ | -------------------------------- |
| API 포트 | 8080                             |
| API 형식 | OpenAI API 호환 + HuggingFace 네이티브 |
| GPU    | NVIDIA GPU 필수                    |

## 주요 실행 옵션

| 옵션                   | 설명                               |
| -------------------- | -------------------------------- |
| `--model-id`         | HuggingFace 모델 ID                |
| `--max-input-tokens` | 입력 최대 토큰 수                       |
| `--max-total-tokens` | 입력 + 출력 최대 토큰 수                  |
| `--quantize`         | 양자화 방식 (bitsandbytes, gptq, awq) |
| `--num-shard`        | GPU 샤딩 수 (멀티 GPU)                |

## 라이선스

| 구분     | 내용                                     |
| ------ | -------------------------------------- |
| 라이선스   | Apache License 2.0                     |
| 개인 사용  | 자유롭게 사용 가능                             |
| 상업적 사용 | 자유롭게 사용 가능. 단, 서빙하는 모델의 라이선스는 별도 확인 필요 |

## 참고

* [TGI 공식 문서](https://huggingface.co/docs/text-generation-inference)
* [TGI GitHub](https://github.com/huggingface/text-generation-inference)

## 설치 점검 목록

* `docker compose up -d` 후 `docker compose ps`로 컨테이너 상태를 확인했습니다.
* 기본 포트/계정/비밀번호를 문서대로 점검했습니다.
* 운영용으로 사용할 때 기본 비밀번호/시크릿 값을 변경했습니다.
* 장애 분석을 위해 `docker compose logs -f` 확인 방법을 숙지했습니다.

## 문제 해결 가이드

* 컨테이너가 실행되지 않으면 `docker compose logs -f`로 오류 원인을 먼저 확인합니다.
* 포트 충돌이 나면 기존 프로세스를 종료하거나 포트 매핑 값을 변경합니다.
* 이미지 pull 실패 시 네트워크 연결 및 레지스트리 접근 권한을 확인합니다.
* 설정 변경 후 문제가 지속되면 `docker compose down` 후 다시 `up -d`로 재기동합니다.

## 관련 문서

<CardGroup cols={2}>
  <Card title="Setup 홈" icon="house" href="/setup/index">
    운영체제별 설치 흐름을 다시 확인합니다.
  </Card>

  <Card title="다음: TEI (Text Embeddings Inference)" icon="arrow-right" href="/stacks/tei">
    다음 설치 단계를 이어서 진행합니다.
  </Card>
</CardGroup>
