🚀 使用文本生成推理(TGI)在 Hugging Face Spaces 上部署 OLMo-7B

社区文章 发布于2025年2月2日

Hugging Face 的 文本生成推理(TGI)生产级 LLM 部署 的首选解决方案。与我们之前的 基于 FastAPI 的原型 不同,本指南展示了如何使用 TGIHugging Face Spaces部署 OLMo-7B-Instruct,使其 可扩展、优化且高效

📌 有何不同?

  • TGI 支持的 API → 专为推理优化,而不仅仅是概念验证。
  • Hugging Face Transformers 兼容 → 支持任何 TGI 支持的 LLM
  • 自动优化 → 所有 TGI 的优点。

1️⃣ 设置 Space

前往 Hugging Face Spaces创建一个新的 Space

  • 选择Docker 作为 SDK。
  • README.md设置 app_port: 8080

🔥 重要提示: 与其他 Spaces 不同,TGI 需要 app_port: 8080(或您选择的端口)才能正确路由。

2️⃣ 编写 Dockerfile

TGI 为 Hugging Face 模型提供了预构建的 推理服务器
我们只需要设置一个 Dockerfile 来拉取正确的镜像并配置模型。

📜 Dockerfile

# Use Hugging Face TGI as the base image
FROM ghcr.io/huggingface/text-generation-inference:3.0.2

# Set working directory
WORKDIR /app

# Create and set permissions for cache directories
RUN mkdir -p /data && chmod 777 /data
RUN mkdir -p /.cache && chmod 777 /.cache
RUN mkdir -p /.triton && chmod 777 /.triton

# Expose the model API on port 8080
EXPOSE 8080

# Set Hugging Face token for private models
ARG HF_TOKEN
ENV HF_TOKEN=${HF_TOKEN}

# Run the TGI server with OLMo-7B
CMD ["--model-id", "allenai/OLMo-7B-0724-Instruct-hf", "--port", "8080"]

📷 [截图占位符:使用 TGI 部署 Space]

3️⃣ 测试 API

部署后,TGI API 将自动在以下地址可用:

https://your-space-url.hf.space/v1/generate

使用 curl

~ curl https://arig23498-tgi-docker-olmo.hf.space/v1/chat/completions \
    -X POST \
    -d '{
  "model": "tgi",
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful assistant."
    },
    {
      "role": "user",
      "content": "What is deep learning?"
    }
  ],
  "stream": true,
  "max_tokens": 20
}' \
    -H 'Content-Type: application/json'

使用 Python

from huggingface_hub import InferenceClient

client = InferenceClient(
    base_url="https://arig23498-tgi-docker-olmo.hf.space/v1/",
)

output = client.chat.completions.create(
    model="tgi",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "What is deep learning?"},
    ],
    stream=True,
    max_tokens=1024,
)

for chunk in output:
    print(chunk.choices[0].delta.content, end="")

🔗 更多 TGI 功能: TGI v3.0.2 发布说明

🚀 下一步?

  • 使用 TGI 部署 其他 LLM,例如 LLaMA 3、Falcon 或 Mistral。
  • 添加 GPU 支持 以实现闪电般的推理速度。
  • 使用 Gradio 或 Streamlit 构建 前端聊天机器人

🔹 立即尝试并扩展您自己的 LLM API!🚀

社区

注册登录 发表评论