Hugging Face Inference API 指南
Hugging Face 的推理入口现在不该只理解成“一个旧的 Serverless API”。更接近官方当前文档的理解是三条路:
- Inference Providers
- Inference Endpoints
- Local endpoints / 自托管推理服务
这三条路的区别,不是接口名字,而是你要什么控制权、稳定性和成本结构。
#1. Inference Providers
官方当前文档主推的是 Inference Providers。它的价值在于,你可以通过统一入口访问多个推理提供商,而不是每接一家都重新学一套 SDK。
#获取 API Token
- 登录 Hugging Face 账号。
- 前往 Settings > Access Tokens。
- 创建一个带有
read权限的 token。
#Python 调用示例
使用标准的 requests 库或官方的 huggingface_hub 库。
pythonimport requests # 模型地址 API_URL = "https://api-inference.huggingface.co/models/mistralai/Mistral-7B-Instruct-v0.2" headers = {"Authorization": "Bearer hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"} def query(payload): response = requests.post(API_URL, headers=headers, json=payload) return response.json() output = query({ "inputs": "Can you please explain what is Hugging Face?", "parameters": {"max_new_tokens": 100} }) print(output)
#推荐使用官方 SDK
pythonfrom huggingface_hub import InferenceClient client = InferenceClient(model="mistralai/Mistral-7B-Instruct-v0.2", token="hf_xxx") # 文本生成 response = client.text_generation("The capital of France is") print(response) # 图像生成 (Text-to-Image) image = client.text_to_image("An astronaut riding a horse on mars") image.save("astronaut.png")
#2. 向量提取 (RAG 常见入口)
对于构建 RAG (检索增强生成) 系统,这是获取文本向量(Embeddings)最便捷的方式。
pythonclient = InferenceClient(model="BAAI/bge-small-zh-v1.5", token="hf_xxx") embedding = client.feature_extraction("这是一段需要向量化的中文文本") print(len(embedding)) # 对于 bge-small,维度通常是 512
#3. Inference Endpoints (生产级专用端点)
如果你需要更稳定、可控、可隔离的生产部署,就看 Inference Endpoints。这类服务更像正式托管推理,而不是公共共享入口。
#主要特点
- 独享资源:你可以选择专用的 CPU 或 GPU(如 A10G, T4, A100)。
- 完全控制:支持设置自动休眠、私有连接和安全选项。
- 自定义框架:支持加载自定义推理代码。
- 按量计费:根据硬件使用时长按小时计费。
#创建流程
- 在 Hub 上选择一个模型。
- 点击模型页面右上角的 Deploy > Inference Endpoints。
- 选择云服务商(AWS/Azure)和硬件。
- 部署完成后,你将获得一个私有的 URL,调用方式与 Serverless API 基本一致。
#4. Local endpoints / 自托管
Hugging Face 官方 InferenceClient 也支持连本地或自托管的 OpenAI-compatible 推理服务,比如 llama.cpp、vLLM、TGI 一类。这对已经有自己推理基础设施的团队很有用,因为客户端心智可以保持一致。
#5. 常见问题与局限性
#共享推理入口的常见限制
- 会有速率限制或吞吐波动
- 冷启动仍可能存在
- 热门模型和冷门模型的体验差异会比较明显
#性能建议
- Batching:如果可能,将多个输入合并为一个请求以提高效率。
- Caching:在客户端对常见查询的结果进行缓存。
#官方参考
- Inference Providers: https://huggingface.co/docs/inference-providers/en/index↗
InferenceClientdocs: https://huggingface.co/docs/huggingface_hub/package_reference/inference_client↗