模型
Outlines 支持使用多种推理引擎(outlines.models)进行生成。使用 Outlines 加载模型时,不同推理引擎遵循相似的接口。
import outlines
model = outlines.models.transformers("microsoft/Phi-3-mini-128k-instruct")
model = outlines.models.transformers_vision("llava-hf/llava-v1.6-mistral-7b-hf")
model = outlines.models.vllm("microsoft/Phi-3-mini-128k-instruct")
model = outlines.models.llamacpp(
"microsoft/Phi-3-mini-4k-instruct-gguf", "Phi-3-mini-4k-instruct-q4.gguf"
)
model = outlines.models.exllamav2("bartowski/Phi-3-mini-128k-instruct-exl2")
model = outlines.models.mlxlm("mlx-community/Phi-3-mini-4k-instruct-4bit")
model = outlines.models.openai(
"gpt-4o-mini",
api_key=os.environ["OPENAI_API_KEY"]
)
功能矩阵
| Transformers | Transformers Vision | vLLM | llama.cpp | ExLlamaV2 | MLXLM | OpenAI* | |
|---|---|---|---|---|---|---|---|
| 设备 | |||||||
| Cuda | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | 不适用 |
| Apple Silicon | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | 不适用 |
| x86 / AMD64 | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | 不适用 |
| 采样 | |||||||
| 贪婪采样 | ✅ | ✅ | ✅ | ✅* | ✅ | ✅ | ❌ |
| 多项式采样 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 多样本 | ✅ | ✅ | ❌ | ❌ | ✅ | ||
| Beam Search | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ |
| 生成 | |||||||
| 批量 | ✅ | ✅ | ✅ | ❌ | ? | ❌ | ❌ |
| 流式 | ✅ | ❌ | ❌ | ✅ | ? | ✅ | ❌ |
| 文本 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 结构化 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| JSON Schema | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 选择 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Regex | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| 语法 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
注意事项
- 由于其 API 和服务器实现的限制,OpenAI 不支持结构化生成。
outlines.generate的“结构化”方法包括outlines.generate.regex、outlines.generate.json、outlines.generate.cfg等。- MLXLM 仅支持 Apple Silicon。
- llama.cpp 的贪婪采样可通过设置多项式采样的
temperature = 0.0来实现。