LLM Gallery¶
本节包含 distilabel
中实现的现有 LLM
子类。
llms
¶
AnthropicLLM
¶
基类: AsyncLLM
Anthropic LLM 实现,运行 Async API 客户端。
属性
名称 | 类型 | 描述 |
---|---|---|
model |
str
|
用于 LLM 的模型名称,例如 "claude-3-opus-20240229"、"claude-3-sonnet-20240229" 等。可用模型可在此处查看:Anthropic: 模型概览。 |
api_key |
可选[RuntimeParameter[SecretStr]]
|
用于验证对 Anthropic API 请求的 API 密钥。如果未提供,将从 |
base_url |
可选[RuntimeParameter[str]]
|
用于 Anthropic API 的基本 URL。默认为 |
timeout |
RuntimeParameter[float]
|
等待响应的最长秒数。默认为 |
max_retries |
RuntimeParameter[int]
|
在失败之前重试请求的最大次数。默认为 |
http_client |
可选[AsyncClient]
|
如果提供,则使用备用 HTTP 客户端来调用 Anthropic API。默认为 |
structured_output |
可选[RuntimeParameter[InstructorStructuredOutputType]]
|
一个字典,包含使用 |
_api_key_env_var |
str
|
用于 API 密钥的环境变量名称。它旨在内部使用。 |
_aclient |
可选[AsyncAnthropic]
|
用于 Anthropic API 的 |
运行时参数
api_key
:用于验证对 Anthropic API 请求的 API 密钥。如果未提供,将从ANTHROPIC_API_KEY
环境变量中读取。base_url
:用于 Anthropic API 的基本 URL。默认为"https://api.anthropic.com"
。timeout
:等待响应的最长秒数。默认为600.0
。max_retries
:在失败之前重试请求的最大次数。默认为6
。
示例
生成文本
from distilabel.models.llms import AnthropicLLM
llm = AnthropicLLM(model="claude-3-opus-20240229", api_key="api.key")
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
生成结构化数据
from pydantic import BaseModel
from distilabel.models.llms import AnthropicLLM
class User(BaseModel):
name: str
last_name: str
id: int
llm = AnthropicLLM(
model="claude-3-opus-20240229",
api_key="api.key",
structured_output={"schema": User}
)
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Create a user profile for the following marathon"}]])
源代码位于 src/distilabel/models/llms/anthropic.py
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 |
|
model_name
property
¶
返回用于 LLM 的模型名称。
_check_model_exists()
¶
检查指定的模型是否存在于可用模型中。
源代码位于 src/distilabel/models/llms/anthropic.py
load()
¶
加载 AsyncAnthropic
客户端以使用 Anthropic 异步 API。
源代码位于 src/distilabel/models/llms/anthropic.py
agenerate(input, max_tokens=128, stop_sequences=None, temperature=1.0, top_p=None, top_k=None)
async
¶
使用 Anthropic Async API 定义异步生成响应。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
FormattedInput
|
以聊天格式的单个输入,用于生成响应。 |
必需 |
max_tokens
|
int
|
模型将生成的最大新 token 数。默认为 |
128
|
stop_sequences
|
Union[List[str], None]
|
将导致模型停止生成的自定义文本序列。默认为 |
None
|
temperature
|
float
|
用于生成的温度。仅当 top_p 为 None 时设置。默认为 |
1.0
|
top_p
|
Union[float, None]
|
用于生成的 top-p 值。默认为 |
None
|
top_k
|
Union[int, None]
|
用于生成的 top-k 值。默认为 |
None
|
返回
类型 | 描述 |
---|---|
GenerateOutput
|
包含每个输入的生成响应的字符串列表的列表。 |
源代码位于 src/distilabel/models/llms/anthropic.py
AnyscaleLLM
¶
基类: OpenAILLM
Anyscale LLM 实现,运行 OpenAI 的异步 API 客户端。
属性
名称 | 类型 | 描述 |
---|---|---|
model |
str
|
用于 LLM 的模型名称,例如 |
base_url |
可选[RuntimeParameter[str]]
|
用于 Anyscale API 请求的基本 URL。默认为 |
api_key |
可选[RuntimeParameter[SecretStr]]
|
用于验证对 Anyscale API 请求的 API 密钥。默认为 |
_api_key_env_var |
str
|
用于 API 密钥的环境变量名称。它旨在内部使用。 |
示例
生成文本
from distilabel.models.llms import AnyscaleLLM
llm = AnyscaleLLM(model="google/gemma-7b-it", api_key="api.key")
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
源代码位于 src/distilabel/models/llms/anyscale.py
AzureOpenAILLM
¶
基类: OpenAILLM
Azure OpenAI LLM 实现,运行异步 API 客户端。
属性
名称 | 类型 | 描述 |
---|---|---|
model |
str
|
用于 LLM 的模型名称,即 Azure 部署的名称。 |
base_url |
可选[RuntimeParameter[str]]
|
用于 Azure OpenAI API 的基本 URL 可以使用 |
api_key |
可选[RuntimeParameter[SecretStr]]
|
用于验证对 Azure OpenAI API 请求的 API 密钥。默认为 |
api_version |
可选[RuntimeParameter[str]]
|
用于 Azure OpenAI API 的 API 版本。默认为 |
图标
:material-microsoft-azure
示例
生成文本
from distilabel.models.llms import AzureOpenAILLM
llm = AzureOpenAILLM(model="gpt-4-turbo", api_key="api.key")
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
从遵循 OpenAI API 的自定义端点生成文本
from distilabel.models.llms import AzureOpenAILLM
llm = AzureOpenAILLM(
model="prometheus-eval/prometheus-7b-v2.0",
base_url=r"http://localhost:8080/v1"
)
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
生成结构化数据
from pydantic import BaseModel
from distilabel.models.llms import AzureOpenAILLM
class User(BaseModel):
name: str
last_name: str
id: int
llm = AzureOpenAILLM(
model="gpt-4-turbo",
api_key="api.key",
structured_output={"schema": User}
)
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Create a user profile for the following marathon"}]])
源代码位于 src/distilabel/models/llms/azure.py
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
|
load()
¶
加载 AsyncAzureOpenAI
客户端以从异步请求中受益。
源代码位于 src/distilabel/models/llms/azure.py
CohereLLM
¶
基类: AsyncLLM
Cohere API 实现,使用异步客户端进行并发文本生成。
属性
名称 | 类型 | 描述 |
---|---|---|
model |
str
|
来自 Cohere API 的模型名称,用于生成。 |
base_url |
可选[RuntimeParameter[str]]
|
用于 Cohere API 请求的基本 URL。默认为 |
api_key |
可选[RuntimeParameter[SecretStr]]
|
用于验证对 Cohere API 请求的 API 密钥。默认为 |
timeout |
RuntimeParameter[int]
|
等待来自 API 响应的最长秒数。默认为 |
client_name |
RuntimeParameter[str]
|
用于 API 请求的客户端名称。默认为 |
structured_output |
可选[RuntimeParameter[InstructorStructuredOutputType]]
|
一个字典,包含使用 |
_ChatMessage |
Type[ChatMessage]
|
来自 |
_aclient |
AsyncClient
|
来自 |
运行时参数
base_url
:用于 Cohere API 请求的基本 URL。默认为"https://api.cohere.ai/v1"
。api_key
:用于验证对 Cohere API 请求的 API 密钥。默认为COHERE_API_KEY
环境变量的值。timeout
:等待来自 API 响应的最长秒数。默认为120
。client_name
:用于 API 请求的客户端名称。默认为"distilabel"
。
示例
生成文本
from distilabel.models.llms import CohereLLM
llm = CohereLLM(model="CohereForAI/c4ai-command-r-plus")
llm.load()
# Call the model
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
Generate structured data:
```python
from pydantic import BaseModel
from distilabel.models.llms import CohereLLM
class User(BaseModel):
name: str
last_name: str
id: int
llm = CohereLLM(
model="CohereForAI/c4ai-command-r-plus",
api_key="api.key",
structured_output={"schema": User}
)
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Create a user profile for the following marathon"}]])
源代码位于 src/distilabel/models/llms/cohere.py
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 |
|
model_name
property
¶
返回用于 LLM 的模型名称。
load()
¶
加载来自 cohere
包的 AsyncClient
客户端。
源代码位于 src/distilabel/models/llms/cohere.py
_format_chat_to_cohere(input)
¶
将聊天输入格式化为 Cohere Chat API 会话格式。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
FormattedInput
|
要格式化的聊天输入。 |
必需 |
返回
类型 | 描述 |
---|---|
Tuple[Union[str, None], List[ChatMessage], str]
|
包含系统、聊天记录和消息的元组。 |
源代码位于 src/distilabel/models/llms/cohere.py
agenerate(input, temperature=None, max_tokens=None, k=None, p=None, seed=None, stop_sequences=None, frequency_penalty=None, presence_penalty=None, raw_prompting=None)
async
¶
从 LLM 生成给定输入的响应。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
FormattedInput
|
以聊天格式的单个输入,用于生成响应。 |
必需 |
temperature
|
Optional[float]
|
用于生成的温度。默认为 |
None
|
max_tokens
|
Optional[int]
|
模型将生成的最大新 token 数。默认为 |
None
|
k
|
Optional[int]
|
为生成保留的最高概率词汇 token 数。默认为 |
None
|
p
|
Optional[float]
|
用于生成的 nucleus 采样概率。默认为 |
None
|
seed
|
Optional[float]
|
用于生成的种子。默认为 |
None
|
stop_sequences
|
Optional[Sequence[str]]
|
用作生成停止标准的序列列表。默认为 |
None
|
frequency_penalty
|
Optional[float]
|
用于生成的频率惩罚。默认为 |
None
|
presence_penalty
|
Optional[float]
|
用于存在的惩罚。默认为 |
None
|
raw_prompting
|
Optional[bool]
|
用于原始提示生成的标志。默认为 |
None
|
返回
类型 | 描述 |
---|---|
GenerateOutput
|
来自 Cohere API 模型的生成响应。 |
源代码位于 src/distilabel/models/llms/cohere.py
221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 |
|
GroqLLM
¶
基类: AsyncLLM
Groq API 实现,使用异步客户端进行并发文本生成。
属性
名称 | 类型 | 描述 |
---|---|---|
model |
str
|
来自 Groq API 的模型名称,用于生成。 |
base_url |
Optional[RuntimeParameter[str]]
|
用于 Groq API 请求的基本 URL。默认为 |
api_key |
Optional[RuntimeParameter[SecretStr]]
|
用于验证对 Groq API 请求的 API 密钥。默认为 |
max_retries |
RuntimeParameter[int]
|
在失败之前重试 API 请求的最大次数。默认为 |
timeout |
RuntimeParameter[int]
|
等待来自 API 响应的最长秒数。默认为 |
structured_output |
Optional[RuntimeParameter[InstructorStructuredOutputType]]
|
一个字典,包含使用 |
_api_key_env_var |
str
|
用于 API 密钥的环境变量名称。 |
_aclient |
Optional[AsyncGroq]
|
来自 |
运行时参数
base_url
:用于 Groq API 请求的基本 URL。默认为"https://api.groq.com"
。api_key
:用于验证对 Groq API 请求的 API 密钥。默认为GROQ_API_KEY
环境变量的值。max_retries
:在失败之前重试 API 请求的最大次数。默认为2
。timeout
:等待来自 API 响应的最长秒数。默认为120
。
示例
生成文本
from distilabel.models.llms import GroqLLM
llm = GroqLLM(model="llama3-70b-8192")
llm.load()
# Call the model
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
Generate structured data:
```python
from pydantic import BaseModel
from distilabel.models.llms import GroqLLM
class User(BaseModel):
name: str
last_name: str
id: int
llm = GroqLLM(
model="llama3-70b-8192",
api_key="api.key",
structured_output={"schema": User}
)
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Create a user profile for the following marathon"}]])
源代码位于 src/distilabel/models/llms/groq.py
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 |
|
model_name
property
¶
返回用于 LLM 的模型名称。
load()
¶
加载 AsyncGroq
客户端以从异步请求中受益。
源代码位于 src/distilabel/models/llms/groq.py
agenerate(input, seed=None, max_new_tokens=128, temperature=1.0, top_p=1.0, stop=None)
async
¶
使用 Groq 异步客户端为给定输入生成 num_generations
响应。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
FormattedInput
|
以聊天格式的单个输入,用于生成响应。 |
必需 |
seed
|
Optional[int]
|
用于生成的种子。默认为 |
None
|
max_new_tokens
|
int
|
模型将生成的最大新 token 数。默认为 |
128
|
temperature
|
float
|
用于生成的温度。默认为 |
1.0
|
top_p
|
float
|
用于生成的 top-p 值。默认为 |
1.0
|
stop
|
Optional[str]
|
用于生成的停止序列。默认为 |
None
|
返回
类型 | 描述 |
---|---|
GenerateOutput
|
包含每个输入的生成响应的字符串列表的列表。 |
参考
- https://console.groq.com/docs/text-chat
源代码位于 src/distilabel/models/llms/groq.py
InferenceEndpointsLLM
¶
基类: InferenceEndpointsBaseClient
、 AsyncLLM
、 MagpieChatTemplateMixin
InferenceEndpoints LLM 实现,运行异步 API 客户端。
此 LLM 将在内部使用 huggingface_hub.AsyncInferenceClient
。
属性
名称 | 类型 | 描述 |
---|---|---|
model_id |
Optional[str]
|
用于 LLM 的模型 ID,可在 Hugging Face Hub 中找到,这将用于解析无服务器 Inference Endpoints API 请求的基本 URL。默认为 |
endpoint_name |
可选[RuntimeParameter[str]]
|
用于 LLM 的 Inference Endpoint 名称。默认为 |
endpoint_namespace |
可选[RuntimeParameter[str]]
|
用于 LLM 的 Inference Endpoint 命名空间。默认为 |
base_url |
可选[RuntimeParameter[str]]
|
用于 Inference Endpoints API 请求的基本 URL。 |
api_key |
可选[RuntimeParameter[SecretStr]]
|
用于验证对 Inference Endpoints API 请求的 API 密钥。 |
tokenizer_id |
Optional[str]
|
用于 LLM 的 tokenizer ID,可在 Hugging Face Hub 中找到。默认为 |
model_display_name |
Optional[str]
|
用于 LLM 的模型显示名称。默认为 |
use_magpie_template |
bool
|
用于启用/禁用应用 Magpie 预查询模板的标志。默认为 |
magpie_pre_query_template |
Union[MagpieAvailablePreQueryTemplates, str, None]
|
要应用于提示或发送到 LLM 以生成指令或后续用户消息的预查询模板。有效值为 "llama3"、"qwen2" 或提供的另一个预查询模板。默认为 |
structured_output |
Optional[RuntimeParameter[StructuredOutputType]]
|
一个字典,包含结构化输出配置;如果需要更细粒度的控制,则包含 |
图标
:hugging
示例
免费的无服务器推理 API,设置使用此 API 的 Task 的 input_batch_size 以避免模型过载
from distilabel.models.llms.huggingface import InferenceEndpointsLLM
llm = InferenceEndpointsLLM(
model_id="meta-llama/Meta-Llama-3.1-70B-Instruct",
)
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
专用推理端点
from distilabel.models.llms.huggingface import InferenceEndpointsLLM
llm = InferenceEndpointsLLM(
endpoint_name="<ENDPOINT_NAME>",
api_key="<HF_API_KEY>",
endpoint_namespace="<USER|ORG>",
)
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
专用推理端点或 TGI
from distilabel.models.llms.huggingface import InferenceEndpointsLLM
llm = InferenceEndpointsLLM(
api_key="<HF_API_KEY>",
base_url="<BASE_URL>",
)
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
生成结构化数据
from pydantic import BaseModel
from distilabel.models.llms import InferenceEndpointsLLM
class User(BaseModel):
name: str
last_name: str
id: int
llm = InferenceEndpointsLLM(
model_id="meta-llama/Meta-Llama-3-70B-Instruct",
tokenizer_id="meta-llama/Meta-Llama-3-70B-Instruct",
api_key="api.key",
structured_output={"format": "json", "schema": User.model_json_schema()}
)
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Create a user profile for the Tour De France"}]])
源代码位于 src/distilabel/models/llms/huggingface/inference_endpoints.py
中
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 |
|
only_one_of_model_id_endpoint_name_or_base_url_provided()
¶
验证是否仅提供了 model_id
或 endpoint_name
中的一个;并且如果也提供了 base_url
,则会显示警告,告知用户提供的 base_url
将被忽略,而优先使用动态计算的 URL。
源代码位于 src/distilabel/models/llms/huggingface/inference_endpoints.py
中
prepare_input(input)
¶
为提供的输入准备输入(应用聊天模板和分词)。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
StandardInput
|
包含聊天项的输入列表。 |
必需 |
返回
类型 | 描述 |
---|---|
str
|
要发送给 LLM 的提示。 |
源代码位于 src/distilabel/models/llms/huggingface/inference_endpoints.py
中
_get_structured_output(input)
¶
获取给定输入的结构化输出(如果有)。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
FormattedInput
|
以聊天格式的单个输入,用于生成响应。 |
必需 |
返回
类型 | 描述 |
---|---|
StandardInput
|
输入和结构化输出,将作为 |
Union[Dict[str, Any], None]
|
推理端点,如果不需要则为 |
源代码位于 src/distilabel/models/llms/huggingface/inference_endpoints.py
中
_check_stop_sequences(stop_sequences=None)
¶
检查提供的停止序列是否不超过 4 个。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
stop_sequences
|
Optional[Union[str, List[str]]]
|
要检查的停止序列。 |
None
|
返回
类型 | 描述 |
---|---|
Union[List[str], None]
|
停止序列。 |
源代码位于 src/distilabel/models/llms/huggingface/inference_endpoints.py
中
agenerate(input, max_new_tokens=128, frequency_penalty=None, logit_bias=None, logprobs=False, presence_penalty=None, seed=None, stop_sequences=None, temperature=1.0, tool_choice=None, tool_prompt=None, tools=None, top_logprobs=None, top_n_tokens=None, top_p=None, do_sample=False, repetition_penalty=None, return_full_text=False, top_k=None, typical_p=None, watermark=False, num_generations=1)
async
¶
使用异步客户端为给定输入生成补全。此方法使用 huggingface_hub.AsyncClient
的两个方法:chat_completion
和 text_generation
。 仅当未指定 tokenizer_id
时,才会使用 chat_completion
方法。此函数的某些参数特定于 text_generation
方法,而另一些参数特定于 chat_completion
方法。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
FormattedInput
|
以聊天格式的单个输入,用于生成响应。 |
必需 |
max_new_tokens
|
int
|
模型将生成的最大新 token 数。默认为 |
128
|
frequency_penalty
|
Optional[Annotated[float, Field(ge=-2.0, le=2.0)]]
|
介于 |
None
|
logit_bias
|
Optional[List[float]]
|
修改补全中指定 token 出现的可能性。此参数是 |
None
|
logprobs
|
bool
|
是否返回对数概率。此参数是 |
False
|
presence_penalty
|
Optional[Annotated[float, Field(ge=-2.0, le=2.0)]]
|
介于 |
None
|
seed
|
Optional[int]
|
用于生成的种子。默认为 |
None
|
stop_sequences
|
Optional[List[str]]
|
单个字符串或字符串列表,包含在其中停止生成的序列。默认为 |
None
|
temperature
|
float
|
用于生成的温度。默认为 |
1.0
|
tool_choice
|
Optional[Union[Dict[str, str], Literal['auto']]]
|
模型应调用的工具的名称。它可以是像 |
None
|
tool_prompt
|
Optional[str]
|
在工具之前附加的提示。此参数是 |
None
|
tools
|
Optional[List[Dict[str, Any]]]
|
LLM 可以使用的工具定义列表。此参数是 |
None
|
top_logprobs
|
Optional[PositiveInt]
|
每个生成的输出 token 要返回的顶部对数概率的数量。此参数是 |
None
|
top_n_tokens
|
Optional[PositiveInt]
|
每个生成的输出 token 要返回的顶部对数概率的数量。此参数是 |
None
|
top_p
|
Optional[float]
|
用于生成的 top-p 值。默认为 |
None
|
do_sample
|
bool
|
是否使用采样进行生成。此参数是 |
False
|
repetition_penalty
|
Optional[float]
|
用于生成的重复惩罚。此参数是 |
None
|
return_full_text
|
bool
|
是否返回补全的完整文本,还是仅返回生成的文本。默认为 |
False
|
top_k
|
Optional[int]
|
用于生成的 top-k 值。此参数是 |
None
|
typical_p
|
Optional[float]
|
用于生成的 typical-p 值。此参数是 |
None
|
watermark
|
bool
|
是否将水印添加到生成的文本。此参数是 |
False
|
num_generations
|
int
|
要生成的代数。默认为 |
1
|
返回
类型 | 描述 |
---|---|
GenerateOutput
|
包含每个输入的生成响应的字符串列表的列表。 |
源代码位于 src/distilabel/models/llms/huggingface/inference_endpoints.py
中
447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 |
|
TransformersLLM
¶
基类: LLM
、 MagpieChatTemplateMixin
、 CudaDevicePlacementMixin
使用文本生成 pipeline 的 Hugging Face transformers
库 LLM 实现。
属性
名称 | 类型 | 描述 |
---|---|---|
model |
str
|
模型 Hugging Face Hub repo id 或包含模型权重和配置文件的目录路径。 |
revision |
str
|
如果 |
torch_dtype |
str
|
模型要使用的 torch dtype,例如 "float16"、"float32" 等。默认为 |
trust_remote_code |
bool
|
是否允许获取和执行从 Hub 仓库获取的远程代码。默认为 |
model_kwargs |
Optional[Dict[str, Any]]
|
将传递给模型的 |
tokenizer |
Optional[str]
|
tokenizer Hugging Face Hub repo id 或包含 tokenizer 配置文件目录的路径。如果未提供,将使用与 |
use_fast |
bool
|
是否使用快速 tokenizer。默认为 |
chat_template |
Optional[str]
|
将用于构建提示的聊天模板,然后再将其发送到模型。 如果未提供,将使用 tokenizer 配置中定义的聊天模板。 如果未提供且 tokenizer 没有聊天模板,则将使用 ChatML 模板。默认为 |
device |
Optional[Union[str, int]]
|
模型将加载到的设备的名称或索引。默认为 |
device_map |
Optional[Union[str, Dict[str, Any]]]
|
将模型的每一层映射到设备的字典,或像 |
token |
Optional[SecretStr]
|
将用于向 Hugging Face Hub 验证身份的 Hugging Face Hub token。 如果未提供,将使用 |
structured_output |
Optional[RuntimeParameter[OutlinesStructuredOutputType]]
|
一个字典,包含结构化输出配置;如果需要更细粒度的控制,则包含 |
use_magpie_template |
bool
|
用于启用/禁用应用 Magpie 预查询模板的标志。默认为 |
magpie_pre_query_template |
Union[MagpieAvailablePreQueryTemplates, str, None]
|
要应用于提示或发送到 LLM 以生成指令或后续用户消息的预查询模板。有效值为 "llama3"、"qwen2" 或提供的另一个预查询模板。默认为 |
图标
:hugging
示例
生成文本
from distilabel.models.llms import TransformersLLM
llm = TransformersLLM(model="microsoft/Phi-3-mini-4k-instruct")
llm.load()
# Call the model
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
源代码位于 src/distilabel/models/llms/huggingface/transformers.py
中
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 |
|
model_name
property
¶
返回用于 LLM 的模型名称。
load()
¶
加载模型和 tokenizer,并创建文本生成 pipeline。 此外,它还将配置 tokenizer 聊天模板。
源代码位于 src/distilabel/models/llms/huggingface/transformers.py
中
unload()
¶
prepare_input(input)
¶
为提供的输入准备输入(应用聊天模板和分词)。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
StandardInput
|
包含聊天项的输入列表。 |
必需 |
返回
类型 | 描述 |
---|---|
str
|
要发送给 LLM 的提示。 |
源代码位于 src/distilabel/models/llms/huggingface/transformers.py
中
generate(inputs, num_generations=1, max_new_tokens=128, temperature=0.1, repetition_penalty=1.1, top_p=1.0, top_k=0, do_sample=True)
¶
使用文本生成 pipeline 为每个输入生成 num_generations
个响应。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
inputs
|
List[StandardInput]
|
聊天格式的输入列表,用于生成响应。 |
必需 |
num_generations
|
int
|
每个输入要创建的代数。默认为 |
1
|
max_new_tokens
|
int
|
模型将生成的最大新 token 数。默认为 |
128
|
temperature
|
float
|
用于生成的温度。默认为 |
0.1
|
repetition_penalty
|
float
|
用于生成的重复惩罚。默认为 |
1.1
|
top_p
|
float
|
用于生成的 top-p 值。默认为 |
1.0
|
top_k
|
int
|
用于生成的 top-k 值。默认为 |
0
|
do_sample
|
bool
|
是否使用采样。默认为 |
True
|
返回
类型 | 描述 |
---|---|
List[GenerateOutput]
|
包含每个输入的生成响应的字符串列表的列表。 |
源代码位于 src/distilabel/models/llms/huggingface/transformers.py
中
get_last_hidden_states(inputs)
¶
获取给定输入的模型的最后 hidden_states
。它不执行任务头。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
inputs
|
List[StandardInput]
|
聊天格式的输入列表,用于生成嵌入。 |
必需 |
返回
类型 | 描述 |
---|---|
List[HiddenState]
|
一个列表,其中包含每个序列的最后一个隐藏状态,使用 NumPy 数组 |
List[HiddenState]
|
形状为 [num_tokens, hidden_size]。 |
源代码位于 src/distilabel/models/llms/huggingface/transformers.py
中
_prepare_structured_output(structured_output=None)
¶
创建适当的函数来过滤 token,以生成结构化输出。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
structured_output
|
Optional[OutlinesStructuredOutputType]
|
配置字典,用于准备结构化输出。 |
None
|
返回
类型 | 描述 |
---|---|
Union[Callable, List[Callable]]
|
将用于指导模型生成的 callable。 |
源代码位于 src/distilabel/models/llms/huggingface/transformers.py
中
LiteLLM
¶
基类: AsyncLLM
运行异步 API 客户端的 LiteLLM 实现。
属性
名称 | 类型 | 描述 |
---|---|---|
model |
str
|
用于 LLM 的模型名称,例如 "gpt-3.5-turbo" 或 "mistral/mistral-large" 等。 |
verbose |
RuntimeParameter[bool]
|
是否记录 LiteLLM 客户端的日志。默认为 |
structured_output |
可选[RuntimeParameter[InstructorStructuredOutputType]]
|
一个字典,包含使用 |
运行时参数
verbose
:是否记录 LiteLLM 客户端的日志。默认为False
。
示例
生成文本
from distilabel.models.llms import LiteLLM
llm = LiteLLM(model="gpt-3.5-turbo")
llm.load()
# Call the model
output = llm.generate(inputs=[[{"role": "user", "content": "Hello world!"}]])
Generate structured data:
```python
from pydantic import BaseModel
from distilabel.models.llms import LiteLLM
class User(BaseModel):
name: str
last_name: str
id: int
llm = LiteLLM(
model="gpt-3.5-turbo",
api_key="api.key",
structured_output={"schema": User}
)
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Create a user profile for the following marathon"}]])
源代码位于 src/distilabel/models/llms/litellm.py
中
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 |
|
model_name
property
¶
返回用于 LLM 的模型名称。
load()
¶
加载 acompletion
LiteLLM 客户端以受益于异步请求。
源代码位于 src/distilabel/models/llms/litellm.py
中
agenerate(input, num_generations=1, functions=None, function_call=None, temperature=1.0, top_p=1.0, stop=None, max_tokens=None, presence_penalty=None, frequency_penalty=None, logit_bias=None, user=None, metadata=None, api_base=None, api_version=None, api_key=None, model_list=None, mock_response=None, force_timeout=600, custom_llm_provider=None)
async
¶
使用 LiteLLM 异步客户端 为给定输入生成 num_generations
个响应。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
FormattedInput
|
以聊天格式的单个输入,用于生成响应。 |
必需 |
num_generations
|
int
|
每个输入要创建的代数。默认为 |
1
|
functions
|
Optional[List]
|
要应用于对话消息的函数列表。默认为 |
None
|
function_call
|
Optional[str]
|
要在对话中调用的函数的名称。默认为 |
None
|
temperature
|
Optional[float]
|
用于生成的温度。默认为 |
1.0
|
top_p
|
Optional[float]
|
用于生成的 top-p 值。默认为 |
1.0
|
stop
|
Optional[Union[str, list]]
|
最多 4 个序列,LLM API 将在此处停止生成更多 token。默认为 |
None
|
max_tokens
|
Optional[int]
|
生成补全中的最大 token 数。默认为 |
None
|
presence_penalty
|
Optional[float]
|
用于根据新 token 在目前文本中是否存在来惩罚新 token。默认为 |
None
|
frequency_penalty
|
Optional[float]
|
用于根据新 token 在目前文本中的频率来惩罚新 token。默认为 |
None
|
logit_bias
|
Optional[dict]
|
用于修改特定 token 在补全中出现的概率。默认为 |
None
|
user
|
Optional[str]
|
代表最终用户的唯一标识符。这可以帮助 LLM 提供商监控和检测滥用行为。默认为 |
None
|
metadata
|
Optional[dict]
|
传入额外的元数据以标记您的补全调用 - 例如提示版本、详细信息等。默认为 |
None
|
api_base
|
Optional[str]
|
API 的基本 URL。默认为 |
None
|
api_version
|
Optional[str]
|
API 版本。默认为 |
None
|
api_key
|
Optional[str]
|
API 密钥。默认为 |
None
|
model_list
|
Optional[list]
|
api 基本 URL、版本、密钥的列表。默认为 |
None
|
mock_response
|
Optional[str]
|
如果提供,则返回模拟补全响应,用于测试或调试目的。默认为 |
None
|
force_timeout
|
Optional[int]
|
补全请求的最大执行时间(秒)。默认为 |
600
|
custom_llm_provider
|
Optional[str]
|
用于非 OpenAI LLM,Bedrock 的示例用法,设置(iterable) model="amazon.titan-tg1-large" 和 custom_llm_provider="bedrock"。默认为 |
None
|
返回
类型 | 描述 |
---|---|
GenerateOutput
|
包含每个输入的生成响应的字符串列表的列表。 |
源代码位于 src/distilabel/models/llms/litellm.py
中
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 |
|
LlamaCppLLM
¶
基类: LLM
、 MagpieChatTemplateMixin
llama.cpp LLM 实现,运行 C++ 代码的 Python 绑定。
属性
名称 | 类型 | 描述 |
---|---|---|
model_path |
RuntimeParameter[FilePath]
|
包含 GGUF 量化模型路径,与已安装的 |
n_gpu_layers |
RuntimeParameter[int]
|
用于 GPU 的层数。默认为 |
chat_format |
可选[RuntimeParameter[str]]
|
模型要使用的聊天格式。默认为 |
n_ctx |
int
|
模型要使用的上下文大小。默认为 |
n_batch |
int
|
模型要使用的提示处理最大批次大小。默认为 |
seed |
int
|
用于生成的随机种子。默认为 |
verbose |
RuntimeParameter[bool]
|
是否打印详细输出。默认为 |
structured_output |
Optional[RuntimeParameter[OutlinesStructuredOutputType]]
|
一个字典,包含结构化输出配置;如果需要更细粒度的控制,则包含 |
extra_kwargs |
Optional[RuntimeParameter[Dict[str, Any]]]
|
将传递给 |
tokenizer_id |
可选[RuntimeParameter[str]]
|
tokenizer Hugging Face Hub repo id 或包含 tokenizer 配置文件目录的路径。如果未提供,将使用与 |
use_magpie_template |
bool
|
用于启用/禁用应用 Magpie 预查询模板的标志。默认为 |
magpie_pre_query_template |
Union[MagpieAvailablePreQueryTemplates, str, None]
|
要应用于提示或发送到 LLM 以生成指令或后续用户消息的预查询模板。有效值为 "llama3"、"qwen2" 或提供的另一个预查询模板。默认为 |
_model |
Optional[Llama]
|
Llama 模型实例。此属性供内部使用,不应直接访问。它将在 |
运行时参数
model_path
:GGUF 量化模型的路径。n_gpu_layers
:用于 GPU 的层数。默认为-1
。chat_format
:模型要使用的聊天格式。默认为None
。verbose
:是否打印详细输出。默认为False
。extra_kwargs
:将传递给llama_cpp
库的Llama
类的其他关键字参数字典。默认为{}
。
示例
生成文本
from pathlib import Path
from distilabel.models.llms import LlamaCppLLM
# You can follow along this example downloading the following model running the following
# command in the terminal, that will download the model to the `Downloads` folder:
# curl -L -o ~/Downloads/openhermes-2.5-mistral-7b.Q4_K_M.gguf https://hugging-face.cn/TheBloke/OpenHermes-2.5-Mistral-7B-GGUF/resolve/main/openhermes-2.5-mistral-7b.Q4_K_M.gguf
model_path = "Downloads/openhermes-2.5-mistral-7b.Q4_K_M.gguf"
llm = LlamaCppLLM(
model_path=str(Path.home() / model_path),
n_gpu_layers=-1, # To use the GPU if available
n_ctx=1024, # Set the context size
)
llm.load()
# Call the model
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
生成结构化数据
from pathlib import Path
from distilabel.models.llms import LlamaCppLLM
model_path = "Downloads/openhermes-2.5-mistral-7b.Q4_K_M.gguf"
class User(BaseModel):
name: str
last_name: str
id: int
llm = LlamaCppLLM(
model_path=str(Path.home() / model_path), # type: ignore
n_gpu_layers=-1,
n_ctx=1024,
structured_output={"format": "json", "schema": Character},
)
llm.load()
# Call the model
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Create a user profile for the following marathon"}]])
源代码位于 src/distilabel/models/llms/llamacpp.py
中
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 |
|
model_name
property
¶
返回用于 LLM 的模型名称。
validate_magpie_usage()
¶
验证 magpie 用法是否有效。
源代码位于 src/distilabel/models/llms/llamacpp.py
中
load()
¶
从 model_path
加载 Llama
模型。
源代码位于 src/distilabel/models/llms/llamacpp.py
中
prepare_input(input)
¶
为提供的输入准备输入(应用聊天模板和分词)。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
StandardInput
|
包含聊天项的输入列表。 |
必需 |
返回
类型 | 描述 |
---|---|
str
|
要发送给 LLM 的提示。 |
源代码位于 src/distilabel/models/llms/llamacpp.py
中
generate(inputs, num_generations=1, max_new_tokens=128, frequency_penalty=0.0, presence_penalty=0.0, temperature=1.0, top_p=1.0, extra_generation_kwargs=None)
¶
使用 Llama 模型为给定输入生成 num_generations
个响应。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
inputs
|
List[FormattedInput]
|
聊天格式的输入列表,用于生成响应。 |
必需 |
num_generations
|
int
|
每个输入要创建的代数。默认为 |
1
|
max_new_tokens
|
int
|
模型将生成的最大新 token 数。默认为 |
128
|
frequency_penalty
|
float
|
用于生成的重复惩罚。默认为 |
0.0
|
presence_penalty
|
float
|
用于存在的惩罚。默认为 |
0.0
|
temperature
|
float
|
用于生成的温度。默认为 |
1.0
|
top_p
|
float
|
用于生成的 top-p 值。默认为 |
1.0
|
extra_generation_kwargs
|
Optional[Dict[str, Any]]
|
包含要传递给 |
None
|
返回
类型 | 描述 |
---|---|
List[GenerateOutput]
|
包含每个输入的生成响应的字符串列表的列表。 |
源代码位于 src/distilabel/models/llms/llamacpp.py
中
303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 |
|
_prepare_structured_output(structured_output=None)
¶
创建适当的函数来过滤 token,以生成结构化输出。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
structured_output
|
Optional[OutlinesStructuredOutputType]
|
配置字典,用于准备结构化输出。 |
None
|
返回
类型 | 描述 |
---|---|
Union[LogitsProcessorList, LogitsProcessor]
|
将用于指导模型生成的 callable。 |
源代码位于 src/distilabel/models/llms/llamacpp.py
中
MistralLLM
¶
基类: AsyncLLM
运行异步 API 客户端的 Mistral LLM 实现。
属性
名称 | 类型 | 描述 |
---|---|---|
model |
str
|
用于 LLM 的模型名称,例如 "mistral-tiny"、"mistral-large" 等。 |
endpoint |
str
|
用于 Mistral API 的端点。默认为 "https://api.mistral.ai"。 |
api_key |
可选[RuntimeParameter[SecretStr]]
|
用于验证对 Mistral API 请求的 API 密钥。默认为 |
max_retries |
RuntimeParameter[int]
|
请求失败时尝试的最大重试次数。默认为 |
timeout |
RuntimeParameter[int]
|
等待响应的最长时间(秒)。默认为 |
max_concurrent_requests |
RuntimeParameter[int]
|
要发送的最大并发请求数。默认为 |
structured_output |
可选[RuntimeParameter[InstructorStructuredOutputType]]
|
一个字典,包含使用 |
_api_key_env_var |
str
|
用于 API 密钥的环境变量名称。它旨在内部使用。 |
_aclient |
Optional[Mistral]
|
用于 Mistral API 的 |
运行时参数
api_key
:用于验证对 Mistral API 请求的 API 密钥。max_retries
:请求失败时尝试的最大重试次数。默认为5
。timeout
: 等待响应的最大时间(秒)。默认为120
。max_concurrent_requests
: 要发送的最大并发请求数。默认为64
。
示例
生成文本
from distilabel.models.llms import MistralLLM
llm = MistralLLM(model="open-mixtral-8x22b")
llm.load()
# Call the model
output = llm.generate(inputs=[[{"role": "user", "content": "Hello world!"}]])
Generate structured data:
```python
from pydantic import BaseModel
from distilabel.models.llms import MistralLLM
class User(BaseModel):
name: str
last_name: str
id: int
llm = MistralLLM(
model="open-mixtral-8x22b",
api_key="api.key",
structured_output={"schema": User}
)
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Create a user profile for the following marathon"}]])
源代码位于 src/distilabel/models/llms/mistral.py
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 |
|
model_name
属性
¶
返回用于 LLM 的模型名称。
load()
¶
加载 Mistral
客户端以利用异步请求的优势。
源代码位于 src/distilabel/models/llms/mistral.py
agenerate(input, max_new_tokens=None, temperature=None, top_p=None)
异步
¶
为给定输入生成 num_generations
个响应,使用 MistralAI 异步客户端。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
FormattedInput
|
以聊天格式的单个输入,用于生成响应。 |
必需 |
max_new_tokens
|
Optional[int]
|
模型将生成的最大新 token 数。默认为 |
None
|
temperature
|
Optional[float]
|
用于生成的温度。默认为 |
None
|
top_p
|
Optional[float]
|
用于生成的 top-p 值。默认为 |
None
|
返回
类型 | 描述 |
---|---|
GenerateOutput
|
包含每个输入的生成响应的字符串列表的列表。 |
源代码位于 src/distilabel/models/llms/mistral.py
MlxLLM
¶
基类: LLM
、 MagpieChatTemplateMixin
Apple MLX LLM 实现。
属性
名称 | 类型 | 描述 |
---|---|---|
path_or_hf_repo |
str
|
模型路径或 Hugging Face Hub 仓库 ID。 |
tokenizer_config |
Dict[str, Any]
|
tokenizer 配置。 |
mlx_model_config |
Dict[str, Any]
|
MLX 模型配置。 |
adapter_path |
Optional[str]
|
adapter 的路径。 |
use_magpie_template |
bool
|
用于启用/禁用应用 Magpie 预查询模板的标志。默认为 |
magpie_pre_query_template |
Union[MagpieAvailablePreQueryTemplates, str, None]
|
要应用于提示或发送到 LLM 以生成指令或后续用户消息的预查询模板。有效值为 "llama3"、"qwen2" 或提供的另一个预查询模板。默认为 |
图标
:apple
示例
生成文本
from distilabel.models.llms import MlxLLM
llm = MlxLLM(path_or_hf_repo="mlx-community/Meta-Llama-3.1-8B-Instruct-4bit")
llm.load()
# Call the model
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
源代码位于 src/distilabel/models/llms/mlx.py
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 |
|
model_name
属性
¶
返回用于 LLM 的模型名称。
load()
¶
加载模型和 tokenizer,并创建文本生成 pipeline。 此外,它还将配置 tokenizer 聊天模板。
源代码位于 src/distilabel/models/llms/mlx.py
prepare_input(input)
¶
为提供的输入准备输入(应用聊天模板和分词)。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
Union[StandardInput, str]
|
包含聊天项的输入列表。 |
必需 |
返回
类型 | 描述 |
---|---|
str
|
要发送给 LLM 的提示。 |
源代码位于 src/distilabel/models/llms/mlx.py
generate(inputs, num_generations=1, max_tokens=256, logits_processors=None, max_kv_size=None, prompt_cache=None, prefill_step_size=512, kv_bits=None, kv_group_size=64, quantized_kv_start=0, prompt_progress_callback=None, temp=0.0, top_p=0.0, min_p=0.0, min_tokens_to_keep=1, top_k=-1)
¶
使用文本生成 pipeline 为每个输入生成 num_generations
个响应。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
inputs
|
List[Union[StandardInput, str]]
|
要为其生成响应的输入。 |
必需 |
num_generations
|
int
|
每个输入要创建的代数。默认为 |
1
|
max_tokens
|
int
|
模型将生成的最大新 token 数。默认为 |
256
|
logits_processors
|
Optional[List[Callable]]
|
用于生成的 logits 处理器。默认为 `None`。 |
None
|
max_kv_size
|
Optional[int]
|
键值缓存的最大大小。默认为 `None`。 |
None
|
prompt_cache
|
Optional[Any]
|
用于生成的 prompt 缓存。默认为 `None`。 |
None
|
prefill_step_size
|
int
|
预填充步长。默认为 `512`。 |
512
|
kv_bits
|
Optional[int]
|
用于键值缓存的位数。默认为 `None`。 |
None
|
kv_group_size
|
int
|
键值缓存的组大小。默认为 `64`。 |
64
|
quantized_kv_start
|
int
|
量化键值缓存的起始位置。默认为 `0`。 |
0
|
prompt_progress_callback
|
Optional[Callable[[int, int], None]]
|
用于生成的回调。默认为 `None`。 |
None
|
temp
|
float
|
文本生成的温度。默认为 `0.0`。 |
0.0
|
top_p
|
float
|
用于生成的 top-p 值。默认为 `0.0`。 |
0.0
|
min_p
|
float
|
用于生成的 min-p 值。默认为 `0.0`。 |
0.0
|
min_tokens_to_keep
|
int
|
过滤后用于采样的最小 token 数。必须至少为 1。默认为 `1`。 |
1
|
top_k
|
int
|
用于生成的 top-k 值。默认为 `-1`。 |
-1
|
返回
类型 | 描述 |
---|---|
List[GenerateOutput]
|
包含每个输入的生成响应的字符串列表的列表。 |
源代码位于 src/distilabel/models/llms/mlx.py
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 |
|
MixtureOfAgentsLLM
¶
基类: AsyncLLM
Mixture-of-Agents
实现。
一个 LLM
类,它利用 LLM
的集体优势来生成响应,如 “Mixture-of-Agents Enhances Large Language model Capabilities” 论文中所述。其中有一系列 LLM
提出/生成输出,下一轮/层的 LLM
可以将其用作辅助信息。最后,有一个 LLM
聚合输出以生成最终响应。
属性
名称 | 类型 | 描述 |
---|---|---|
aggregator_llm |
LLM
|
聚合提议者 |
proposers_llms |
List[AsyncLLM]
|
提出要聚合的输出的 |
rounds |
int
|
`proposers_llms` 生成输出的层数或轮数。默认为 `1`。 |
示例
生成文本
from distilabel.models.llms import MixtureOfAgentsLLM, InferenceEndpointsLLM
llm = MixtureOfAgentsLLM(
aggregator_llm=InferenceEndpointsLLM(
model_id="meta-llama/Meta-Llama-3-70B-Instruct",
tokenizer_id="meta-llama/Meta-Llama-3-70B-Instruct",
),
proposers_llms=[
InferenceEndpointsLLM(
model_id="meta-llama/Meta-Llama-3-70B-Instruct",
tokenizer_id="meta-llama/Meta-Llama-3-70B-Instruct",
),
InferenceEndpointsLLM(
model_id="NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO",
tokenizer_id="NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO",
),
InferenceEndpointsLLM(
model_id="HuggingFaceH4/zephyr-orpo-141b-A35b-v0.1",
tokenizer_id="HuggingFaceH4/zephyr-orpo-141b-A35b-v0.1",
),
],
rounds=2,
)
llm.load()
output = llm.generate_outputs(
inputs=[
[
{
"role": "user",
"content": "My favorite witty review of The Rings of Power series is this: Input:",
}
]
]
)
源代码位于 src/distilabel/models/llms/moa.py
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 |
|
runtime_parameters_names
属性
¶
返回 `LLM` 的运行时参数,这些参数是 `LLM`、`aggregator_llm` 和 `proposers_llms` 的 `RuntimeParameter` 的组合。
返回
类型 | 描述 |
---|---|
RuntimeParametersNames
|
`LLM` 的运行时参数。 |
model_name
属性
¶
返回聚合的模型名称。
load()
¶
加载 `MixtureOfAgents` 中的所有 `LLM`。
源代码位于 src/distilabel/models/llms/moa.py
get_generation_kwargs()
¶
以字典形式返回 `MixtureOfAgents` 的 generation kwargs。
返回
类型 | 描述 |
---|---|
Dict[str, Any]
|
`MixtureOfAgents` 的 generation kwargs。 |
源代码位于 src/distilabel/models/llms/moa.py
_build_moa_system_prompt(prev_outputs)
¶
构建 Mixture-of-Agents 系统提示。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
prev_outputs
|
List[str]
|
用作参考的先前输出的列表。 |
必需 |
返回
类型 | 描述 |
---|---|
str
|
Mixture-of-Agents 系统提示。 |
源代码位于 src/distilabel/models/llms/moa.py
_inject_moa_system_prompt(input, prev_outputs)
¶
将 Mixture-of-Agents 系统提示注入到输入中。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
StandardInput
|
要将系统提示注入到的输入。 |
必需 |
prev_outputs
|
List[str]
|
用作参考的先前输出的列表。 |
必需 |
返回
类型 | 描述 |
---|---|
StandardInput
|
注入了 Mixture-of-Agents 系统提示的输入。 |
源代码位于 src/distilabel/models/llms/moa.py
_agenerate(inputs, num_generations=1, **kwargs)
异步
¶
内部函数,用于并发地为输入列表生成响应。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
inputs
|
List[FormattedInput]
|
要为其生成响应的输入列表。 |
必需 |
num_generations
|
int
|
每个输入要生成的代数。 |
1
|
**kwargs
|
Any
|
用于生成的附加 kwargs。 |
{}
|
返回
类型 | 描述 |
---|---|
List[GenerateOutput]
|
包含每个输入的代数的列表。 |
源代码位于 src/distilabel/models/llms/moa.py
OllamaLLM
¶
Bases: AsyncLLM
, MagpieChatTemplateMixin
运行 Async API 客户端的 Ollama LLM 实现。
属性
名称 | 类型 | 描述 |
---|---|---|
model |
str
|
用于 LLM 的模型名称,例如 “notus”。 |
host |
可选[RuntimeParameter[str]]
|
Ollama 服务器主机。 |
timeout |
RuntimeParameter[int]
|
LLM 的超时。默认为 `120`。 |
follow_redirects |
bool
|
是否跟随重定向。默认为 `True`。 |
structured_output |
可选[RuntimeParameter[InstructorStructuredOutputType]]
|
一个字典,包含结构化输出配置;如果需要更细粒度的控制,则包含 |
tokenizer_id |
可选[RuntimeParameter[str]]
|
tokenizer Hugging Face Hub repo id 或包含 tokenizer 配置文件目录的路径。如果未提供,将使用与 |
use_magpie_template |
bool
|
用于启用/禁用应用 Magpie 预查询模板的标志。默认为 |
magpie_pre_query_template |
Union[MagpieAvailablePreQueryTemplates, str, None]
|
要应用于提示或发送到 LLM 以生成指令或后续用户消息的预查询模板。有效值为 "llama3"、"qwen2" 或提供的另一个预查询模板。默认为 |
_aclient |
Optional[AsyncClient]
|
用于 Ollama API 的 `AsyncClient`。它旨在内部使用。在 `load` 方法中设置。 |
运行时参数
host
: Ollama 服务器主机。timeout
: Ollama API 的客户端超时。默认为 `120`。
示例
生成文本
from distilabel.models.llms import OllamaLLM
llm = OllamaLLM(model="llama3")
llm.load()
# Call the model
output = llm.generate(inputs=[[{"role": "user", "content": "Hello world!"}]])
源代码位于 src/distilabel/models/llms/ollama.py
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 |
|
model_name
属性
¶
返回用于 LLM 的模型名称。
validate_magpie_usage()
¶
验证 magpie 用法是否有效。
源代码位于 src/distilabel/models/llms/ollama.py
load()
¶
加载 `AsyncClient` 以使用 Ollama 异步 API。
源代码位于 src/distilabel/models/llms/ollama.py
prepare_input(input)
¶
为提供的输入准备输入(应用聊天模板和分词)。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
StandardInput
|
包含聊天项的输入列表。 |
必需 |
返回
类型 | 描述 |
---|---|
str
|
要发送给 LLM 的提示。 |
源代码位于 src/distilabel/models/llms/ollama.py
agenerate(input, format='', options=None, keep_alive=None)
异步
¶
异步生成响应,使用 Ollama Async API 定义。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
StandardInput
|
用于生成的输入。 |
必需 |
format
|
Literal['', 'json']
|
用于生成的格式。默认为 `""`。 |
''
|
options
|
Union[Options, None]
|
用于生成的选项。默认为 `None`。 |
None
|
keep_alive
|
Union[bool, None]
|
是否保持连接活动。默认为 `None`。 |
None
|
返回
类型 | 描述 |
---|---|
GenerateOutput
|
作为给定输入的补全的字符串列表。 |
源代码位于 src/distilabel/models/llms/ollama.py
OpenAILLM
¶
Bases: OpenAIBaseClient
, AsyncLLM
运行异步 API 客户端的 OpenAI LLM 实现。
属性
名称 | 类型 | 描述 |
---|---|---|
model |
str
|
用于 LLM 的模型名称,例如 “gpt-3.5-turbo”、“gpt-4” 等。支持的模型可以在 此处 找到。 |
base_url |
可选[RuntimeParameter[str]]
|
用于 OpenAI API 请求的基本 URL。默认为 `None`,这意味着将使用为环境变量 `OPENAI_BASE_URL` 设置的值,如果未设置,则使用 “https://api.openai.com/v1”。 |
api_key |
可选[RuntimeParameter[SecretStr]]
|
用于验证 OpenAI API 请求的 API 密钥。默认为 `None`,这意味着将使用为环境变量 `OPENAI_API_KEY` 设置的值,如果未设置,则为 `None`。 |
default_headers |
Optional[RuntimeParameter[Dict[str, str]]]
|
用于 OpenAI API 请求的默认标头。 |
max_retries |
RuntimeParameter[int]
|
在失败之前重试 API 请求的最大次数。默认为 `6`。 |
timeout |
RuntimeParameter[int]
|
等待来自 API 响应的最长秒数。默认为 |
structured_output |
可选[RuntimeParameter[InstructorStructuredOutputType]]
|
一个字典,包含使用 |
运行时参数
base_url
: 用于 OpenAI API 请求的基本 URL。默认为 `None`。api_key
: 用于验证 OpenAI API 请求的 API 密钥。默认为 `None`。max_retries
: 在失败之前重试 API 请求的最大次数。默认为 `6`。timeout
:等待来自 API 响应的最长秒数。默认为120
。
图标
:simple-openai
示例
生成文本
from distilabel.models.llms import OpenAILLM
llm = OpenAILLM(model="gpt-4-turbo", api_key="api.key")
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
从遵循 OpenAI API 的自定义端点生成文本
from distilabel.models.llms import OpenAILLM
llm = OpenAILLM(
model="prometheus-eval/prometheus-7b-v2.0",
base_url=r"http://localhost:8080/v1"
)
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
生成结构化数据
from pydantic import BaseModel
from distilabel.models.llms import OpenAILLM
class User(BaseModel):
name: str
last_name: str
id: int
llm = OpenAILLM(
model="gpt-4-turbo",
api_key="api.key",
structured_output={"schema": User}
)
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Create a user profile for the following marathon"}]])
使用 Batch API 生成(离线批量生成)
from distilabel.models.llms import OpenAILLM
load = llm = OpenAILLM(
model="gpt-3.5-turbo",
use_offline_batch_generation=True,
offline_batch_generation_block_until_done=5, # poll for results every 5 seconds
)
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
# [['Hello! How can I assist you today?']]
源代码位于 src/distilabel/models/llms/openai.py
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 |
|
agenerate(input, num_generations=1, max_new_tokens=128, logprobs=False, top_logprobs=None, echo=False, frequency_penalty=0.0, presence_penalty=0.0, temperature=1.0, top_p=1.0, stop=None, response_format=None, extra_body=None)
异步
¶
为给定输入生成 num_generations
个响应,使用 OpenAI 异步客户端。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
FormattedInput
|
以聊天格式的单个输入,用于生成响应。 |
必需 |
num_generations
|
int
|
每个输入要创建的代数。默认为 |
1
|
max_new_tokens
|
NonNegativeInt
|
模型将生成的最大新 token 数。默认为 |
128
|
logprobs
|
bool
|
是否返回对数概率。默认为 `False`。 |
False
|
top_logprobs
|
Optional[PositiveInt]
|
每个生成的输出 token 要返回的 top 对数概率数。默认为 `None`。 |
None
|
echo
|
bool
|
是否在响应中回显输入。仅当 `input` 参数为 `str` 时才使用。默认为 `False`。 |
False
|
frequency_penalty
|
float
|
用于生成的重复惩罚。默认为 |
0.0
|
presence_penalty
|
float
|
用于存在的惩罚。默认为 |
0.0
|
temperature
|
float
|
用于生成的温度。默认为 |
1.0
|
top_p
|
float
|
用于生成的 top-p 值。默认为 |
1.0
|
stop
|
Optional[Union[str, List[str]]]
|
用作生成停止序列的字符串或字符串列表。默认为 `None`。 |
None
|
response_format
|
Optional[Dict[str, str]]
|
要返回的响应格式。必须是 “text” 或 “json” 之一。阅读 此处 的文档,以获取有关如何使用 OpenAI 的 JSON 模型的更多信息。默认为 None,返回文本。要返回 JSON,请使用 {“type”: “json_object”}。 |
None
|
extra_body
|
Optional[Dict[str, Any]]
|
一个可选字典,其中包含将发送到 OpenAI API 端点的额外 body 参数。默认为 `None`。 |
None
|
返回
类型 | 描述 |
---|---|
GenerateOutput
|
包含每个输入的生成响应的字符串列表的列表。 |
源代码位于 src/distilabel/models/llms/openai.py
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 |
|
_generations_from_openai_completion(completion)
¶
从 OpenAI Chat Completion 对象获取代。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
completion
|
ChatCompletion
|
从中获取代的 completion 对象。 |
必需 |
返回
类型 | 描述 |
---|---|
GenerateOutput
|
包含输入生成的响应的字符串列表。 |
源代码位于 src/distilabel/models/llms/openai.py
offline_batch_generate(inputs=None, num_generations=1, max_new_tokens=128, logprobs=False, top_logprobs=None, frequency_penalty=0.0, presence_penalty=0.0, temperature=1.0, top_p=1.0, stop=None, response_format=None, **kwargs)
¶
使用 OpenAI 批量 API 为给定输入生成 num_generations
个响应。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
inputs
|
Union[List[FormattedInput], None]
|
聊天格式的输入列表,用于生成响应。 |
None
|
num_generations
|
int
|
每个输入要创建的代数。默认为 |
1
|
max_new_tokens
|
int
|
模型将生成的最大新 token 数。默认为 |
128
|
logprobs
|
bool
|
是否返回对数概率。默认为 `False`。 |
False
|
top_logprobs
|
Optional[PositiveInt]
|
每个生成的输出 token 要返回的 top 对数概率数。默认为 `None`。 |
None
|
frequency_penalty
|
float
|
用于生成的重复惩罚。默认为 |
0.0
|
presence_penalty
|
float
|
用于存在的惩罚。默认为 |
0.0
|
temperature
|
float
|
用于生成的温度。默认为 |
1.0
|
top_p
|
float
|
用于生成的 top-p 值。默认为 |
1.0
|
stop
|
Optional[Union[str, List[str]]]
|
用作生成停止序列的字符串或字符串列表。默认为 `None`。 |
None
|
response_format
|
Optional[str]
|
要返回的响应格式。必须是 “text” 或 “json” 之一。阅读 此处 的文档,以获取有关如何使用 OpenAI 的 JSON 模型的更多信息。默认为 `text`。 |
None
|
返回
类型 | 描述 |
---|---|
List[GenerateOutput]
|
包含每个输入生成的响应的字符串列表的列表 |
List[GenerateOutput]
|
在 |
引发
类型 | 描述 |
---|---|
DistilabelOfflineBatchGenerationNotFinishedException
|
如果批量生成尚未完成。 |
ValueError
|
如果未找到任何作业 ID 来检索结果。 |
源代码位于 src/distilabel/models/llms/openai.py
_check_and_get_batch_results()
¶
检查批量作业的状态并从 OpenAI 批量 API 检索结果。
返回
类型 | 描述 |
---|---|
List[GenerateOutput]
|
包含每个输入的生成响应的字符串列表的列表。 |
引发
类型 | 描述 |
---|---|
ValueError
|
如果未找到任何作业 ID 来检索结果。 |
DistilabelOfflineBatchGenerationNotFinishedException
|
如果批量生成尚未完成。 |
RuntimeError
|
如果找到的唯一批量作业失败。 |
源代码位于 src/distilabel/models/llms/openai.py
_parse_output(output)
¶
将来自 OpenAI 批量 API 的输出解析为字符串列表。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
output
|
Dict[str, Any]
|
要解析的输出。 |
必需 |
返回
类型 | 描述 |
---|---|
GenerateOutput
|
包含输入生成的响应的字符串列表。 |
源代码位于 src/distilabel/models/llms/openai.py
_get_openai_batch(batch_id)
¶
从 OpenAI 批量 API 获取一个批量。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
batch_id
|
str
|
要检索的批量的 ID。 |
必需 |
返回
类型 | 描述 |
---|---|
Batch
|
从 OpenAI 批量 API 检索的批量。 |
引发
类型 | 描述 |
---|---|
OpenAIError
|
如果在从 OpenAI 批量 API 检索批量时发生错误。 |
源代码位于 src/distilabel/models/llms/openai.py
_retrieve_batch_results(batch)
¶
从其输出文件中检索批量的结果,并将 JSONL 内容解析为字典列表。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
batch
|
Batch
|
从中检索结果的批量。 |
必需 |
返回
类型 | 描述 |
---|---|
List[Dict[str, Any]]
|
包含批量结果的字典列表。 |
引发
类型 | 描述 |
---|---|
AssertionError
|
如果在批量中未找到输出文件 ID。 |
源代码位于 src/distilabel/models/llms/openai.py
_create_jobs(inputs, **kwargs)
¶
在 OpenAI 批量 API 中创建作业,以生成给定输入的响应。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
inputs
|
List[FormattedInput]
|
聊天格式的输入列表,用于生成响应。 |
必需 |
kwargs
|
Any
|
用于生成的关键字参数。 |
{}
|
返回
类型 | 描述 |
---|---|
Tuple[str, ...]
|
在 OpenAI 批量 API 中创建的作业 ID 列表。 |
源代码位于 src/distilabel/models/llms/openai.py
_create_batch_api_job(batch_input_file)
¶
在 OpenAI 批量 API 中创建一个作业,以生成给定输入文件的响应。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
batch_input_file
|
FileObject
|
要为其生成响应的输入文件。 |
必需 |
返回
类型 | 描述 |
---|---|
Union[Batch, None]
|
在 OpenAI 批量 API 中创建的批量作业。 |
源代码位于 src/distilabel/models/llms/openai.py
_create_batch_files(inputs, **kwargs)
¶
为批量 API 创建必要的输入文件,以生成响应。为了让 OpenAI 批量 API 可以处理,每个文件的最大大小为 100MB,因此如果需要,我们需要将输入拆分为多个文件。
更多信息:https://platform.openai.com/docs/api-reference/files/create
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
inputs
|
List[FormattedInput]
|
聊天格式的输入列表,用于生成响应,可以选择包括结构化输出。 |
必需 |
kwargs
|
Any
|
用于生成的关键字参数。 |
{}
|
返回
类型 | 描述 |
---|---|
List[FileObject]
|
为 OpenAI 批量 API 创建的文件对象列表。 |
引发
类型 | 描述 |
---|---|
OpenAIError
|
如果在 OpenAI 批量 API 中创建批量输入文件时发生错误。 |
源代码位于 src/distilabel/models/llms/openai.py
_create_jsonl_buffers(inputs, **kwargs)
¶
创建一个缓冲区生成器,其中包含要由 OpenAI 批量 API 使用的 JSONL 格式的输入。创建的缓冲区大小为 100MB 或更小。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
inputs
|
List[FormattedInput]
|
聊天格式的输入列表,用于生成响应,可以选择包括结构化输出。 |
必需 |
kwargs
|
Any
|
用于生成的关键字参数。 |
{}
|
产生
类型 | 描述 |
---|---|
BytesIO
|
包含要由 OpenAI 批量使用的 JSONL 格式输入的缓冲区 |
BytesIO
|
API。 |
源代码位于 src/distilabel/models/llms/openai.py
_create_jsonl_row(input, custom_id, **kwargs)
¶
创建一个要由 OpenAI 批量 API 使用的 JSONL 格式的行。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
FormattedInput
|
聊天格式的输入列表,用于生成响应,可以选择包括结构化输出。 |
必需 |
custom_id
|
str
|
用于行的自定义 ID。 |
必需 |
kwargs
|
Any
|
用于生成的关键字参数。 |
{}
|
返回
类型 | 描述 |
---|---|
bytes
|
要由 OpenAI 批量 API 使用的 JSONL 格式的行。 |
源代码位于 src/distilabel/models/llms/openai.py
TogetherLLM
¶
基类: OpenAILLM
运行 OpenAI 异步 API 客户端的 TogetherLLM LLM 实现。
属性
名称 | 类型 | 描述 |
---|---|---|
model |
str
|
用于 LLM 的模型名称,例如 “mistralai/Mixtral-8x7B-Instruct-v0.1”。支持的模型可以在 此处 找到。 |
base_url |
可选[RuntimeParameter[str]]
|
用于 Together API 的基本 URL 可以使用 |
api_key |
可选[RuntimeParameter[SecretStr]]
|
用于验证 Together API 请求的 API 密钥。默认为 `None`,这意味着将使用为环境变量 `TOGETHER_API_KEY` 设置的值,如果未设置,则为 `None`。 |
_api_key_env_var |
str
|
用于 API 密钥的环境变量名称。它旨在内部使用。 |
示例
生成文本
from distilabel.models.llms import AnyscaleLLM
llm = TogetherLLM(model="mistralai/Mixtral-8x7B-Instruct-v0.1", api_key="api.key")
llm.load()
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
源代码位于 src/distilabel/models/llms/together.py
VertexAILLM
¶
基类: AsyncLLM
运行 Gemini 异步 API 客户端的 VertexAI LLM 实现。
- Gemini API: https://cloud.google.com/vertex-ai/docs/generative-ai/model-reference/gemini
要使用 VertexAILLM
,必须使用以下方法之一配置 Google Cloud 身份验证
- 设置
GOOGLE_CLOUD_CREDENTIALS
环境变量 - 使用
gcloud auth application-default login
命令 - 使用来自
google-cloud-aiplatform
库的vertexai.init
函数
属性
名称 | 类型 | 描述 |
---|---|---|
model |
str
|
用于 LLM 的模型名称,例如 “gemini-1.0-pro”。支持的模型。 |
_aclient |
Optional[GenerativeModel]
|
用于 Vertex AI Gemini API 的 |
图标
:simple-googlecloud
示例
生成文本
from distilabel.models.llms import VertexAILLM
llm = VertexAILLM(model="gemini-1.5-pro")
llm.load()
# Call the model
output = llm.generate(inputs=[[{"role": "user", "content": "Hello world!"}]])
源代码位于 src/distilabel/models/llms/vertexai.py
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |
|
model_name
属性
¶
返回用于 LLM 的模型名称。
load()
¶
加载 GenerativeModel
类,该类有权访问 generate_content_async
以利用异步请求的优势。
源代码位于 src/distilabel/models/llms/vertexai.py
_chattype_to_content(input)
¶
将聊天类型转换为 API 期望的内容项列表。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
StandardInput
|
要转换的聊天类型。 |
必需 |
返回
类型 | 描述 |
---|---|
List[Content]
|
List[str]:API 期望的内容项列表。 |
源代码位于 src/distilabel/models/llms/vertexai.py
agenerate(input, temperature=None, top_p=None, top_k=None, max_output_tokens=None, stop_sequences=None, safety_settings=None, tools=None)
异步
¶
为给定输入生成 num_generations
个响应,使用 VertexAI 异步客户端定义。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
VertexChatType
|
以聊天格式的单个输入,用于生成响应。 |
必需 |
temperature
|
Optional[float]
|
控制预测的随机性。范围:[0.0, 1.0]。默认为 `None`。 |
None
|
top_p
|
Optional[float]
|
如果指定,将使用 nucleus 采样。范围:(0.0, 1.0]。默认为 `None`。 |
None
|
top_k
|
Optional[int]
|
如果指定,将使用 top-k 采样。默认为 `None`。 |
None
|
max_output_tokens
|
Optional[int]
|
每个消息要生成的最大输出 token 数。默认为 `None`。 |
None
|
stop_sequences
|
Optional[List[str]]
|
停止序列列表。默认为 `None`。 |
None
|
safety_settings
|
Optional[Dict[str, Any]]
|
从 API 返回的内容的安全配置。默认为 `None`。 |
None
|
tools
|
Optional[List[Dict[str, Any]]]
|
API 可以使用的一系列潜在工具。默认为 `None`。 |
None
|
返回
类型 | 描述 |
---|---|
GenerateOutput
|
包含每个输入的生成响应的字符串列表的列表。 |
源代码位于 src/distilabel/models/llms/vertexai.py
ClientvLLM
¶
Bases: OpenAILLM
, MagpieChatTemplateMixin
用于实现 OpenAI API 规范的 vLLM
服务器的客户端。
属性
名称 | 类型 | 描述 |
---|---|---|
base_url |
可选[RuntimeParameter[str]]
|
`vLLM` 服务器的基本 URL。默认为 `"http://localhost:8000"`。 |
max_retries |
RuntimeParameter[int]
|
在失败之前重试 API 请求的最大次数。默认为 `6`。 |
timeout |
RuntimeParameter[int]
|
等待来自 API 响应的最长秒数。默认为 |
httpx_client_kwargs |
RuntimeParameter[int]
|
将传递给为与 `vLLM` 服务器通信而创建的 |
tokenizer |
Optional[str]
|
Hugging Face Hub 仓库 ID 或 tokenizer 的路径,该 tokenizer 将用于应用聊天模板并在将其发送到服务器之前对输入进行 token 化。默认为 `None`。 |
tokenizer_revision |
Optional[str]
|
要加载的 tokenizer 的修订版本。默认为 `None`。 |
_aclient |
AsyncOpenAI
|
用于与 `vLLM` 服务器通信的 |
运行时参数
base_url
: `vLLM` 服务器的基本 url。默认为 `"http://localhost:8000"`。max_retries
: 在失败之前重试 API 请求的最大次数。默认为 `6`。timeout
:等待来自 API 响应的最长秒数。默认为120
。httpx_client_kwargs
: 将传递给为与 `vLLM` 服务器通信而创建的httpx.AsyncClient
的额外 kwargs。默认为 `None`。
示例
生成文本
from distilabel.models.llms import ClientvLLM
llm = ClientvLLM(
base_url="http://localhost:8000/v1",
tokenizer="meta-llama/Meta-Llama-3.1-8B-Instruct"
)
llm.load()
results = llm.generate_outputs(
inputs=[[{"role": "user", "content": "Hello, how are you?"}]],
temperature=0.7,
top_p=1.0,
max_new_tokens=256,
)
# [
# [
# "I'm functioning properly, thank you for asking. How can I assist you today?",
# "I'm doing well, thank you for asking. I'm a large language model, so I don't have feelings or emotions like humans do, but I'm here to help answer any questions or provide information you might need. How can I assist you today?",
# "I'm just a computer program, so I don't have feelings like humans do, but I'm functioning properly and ready to help you with any questions or tasks you have. What's on your mind?"
# ]
# ]
源代码位于 src/distilabel/models/llms/vllm.py
551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 |
|
model_name
已缓存
属性
¶
返回 vLLM 服务器提供的模型名称。
load()
¶
创建一个 httpx.AsyncClient
以连接到 vLLM 服务器,并可选择性地连接 tokenizer。
源代码位于 src/distilabel/models/llms/vllm.py
_prepare_input(input)
¶
为提供的输入准备输入(应用聊天模板和分词)。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
StandardInput
|
包含聊天项的输入列表。 |
必需 |
返回
类型 | 描述 |
---|---|
str
|
要发送给 LLM 的提示。 |
源代码位于 src/distilabel/models/llms/vllm.py
agenerate(input, num_generations=1, max_new_tokens=128, frequency_penalty=0.0, logit_bias=None, presence_penalty=0.0, temperature=1.0, top_p=1.0)
async
¶
为每个输入生成 num_generations
个响应。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
FormattedInput
|
以聊天格式的单个输入,用于生成响应。 |
必需 |
num_generations
|
int
|
每个输入要创建的代数。默认为 |
1
|
max_new_tokens
|
int
|
模型将生成的最大新 token 数。默认为 |
128
|
frequency_penalty
|
float
|
用于生成的重复惩罚。默认为 |
0.0
|
logit_bias
|
Optional[Dict[str, int]]
|
修改指定 token 出现在补全中的可能性。默认为 `` |
None
|
presence_penalty
|
float
|
用于存在的惩罚。默认为 |
0.0
|
temperature
|
float
|
用于生成的温度。默认为 |
1.0
|
top_p
|
float
|
nucleus 采样。该值指的是应该被考虑用于采样的 top-p token。默认为 |
1.0
|
返回
类型 | 描述 |
---|---|
GenerateOutput
|
包含每个输入的生成响应的字符串列表的列表。 |
源代码位于 src/distilabel/models/llms/vllm.py
vLLM
¶
基类: LLM
、 MagpieChatTemplateMixin
、 CudaDevicePlacementMixin
vLLM
库 LLM 实现。
属性
名称 | 类型 | 描述 |
---|---|---|
model |
str
|
模型 Hugging Face Hub repo id 或包含模型权重和配置文件的目录路径。 |
dtype |
str
|
模型使用的数据类型。默认为 |
trust_remote_code |
bool
|
加载模型时是否信任远程代码。默认为 |
quantization |
Optional[str]
|
模型使用的量化模式。默认为 |
revision |
Optional[str]
|
要加载的模型修订版本。默认为 |
tokenizer |
Optional[str]
|
tokenizer Hugging Face Hub 仓库 ID 或包含 tokenizer 文件的目录路径。如果未提供,tokenizer 将从模型目录加载。默认为 |
tokenizer_mode |
Literal['auto', 'slow']
|
tokenizer 使用的模式。默认为 |
tokenizer_revision |
Optional[str]
|
要加载的 tokenizer 的修订版本。默认为 `None`。 |
skip_tokenizer_init |
bool
|
是否跳过 tokenizer 的初始化。默认为 |
chat_template |
Optional[str]
|
将用于构建提示的聊天模板,然后再将其发送到模型。 如果未提供,将使用 tokenizer 配置中定义的聊天模板。 如果未提供且 tokenizer 没有聊天模板,则将使用 ChatML 模板。默认为 |
structured_output |
Optional[RuntimeParameter[OutlinesStructuredOutputType]]
|
一个字典,包含结构化输出配置;如果需要更细粒度的控制,则包含 |
seed |
int
|
用于随机数生成器的种子。默认为 |
extra_kwargs |
Optional[RuntimeParameter[Dict[str, Any]]]
|
将传递给 |
_model |
LLM
|
|
_tokenizer |
PreTrainedTokenizer
|
用于在将 prompt 传递给 |
use_magpie_template |
bool
|
用于启用/禁用应用 Magpie 预查询模板的标志。默认为 |
magpie_pre_query_template |
Union[MagpieAvailablePreQueryTemplates, str, None]
|
要应用于提示或发送到 LLM 以生成指令或后续用户消息的预查询模板。有效值为 "llama3"、"qwen2" 或提供的另一个预查询模板。默认为 |
参考
- https://github.com/vllm-project/vllm/blob/main/vllm/entrypoints/llm.py
运行时参数
extra_kwargs
:将传递给vllm
库的LLM
类的关键字参数的附加字典。
示例
生成文本
from distilabel.models.llms import vLLM
# You can pass a custom chat_template to the model
llm = vLLM(
model="prometheus-eval/prometheus-7b-v2.0",
chat_template="[INST] {{ messages[0]"content" }}\n{{ messages[1]"content" }}[/INST]",
)
llm.load()
# Call the model
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Hello world!"}]])
生成结构化数据
from pathlib import Path
from distilabel.models.llms import vLLM
class User(BaseModel):
name: str
last_name: str
id: int
llm = vLLM(
model="prometheus-eval/prometheus-7b-v2.0"
structured_output={"format": "json", "schema": Character},
)
llm.load()
# Call the model
output = llm.generate_outputs(inputs=[[{"role": "user", "content": "Create a user profile for the following marathon"}]])
源代码位于 src/distilabel/models/llms/vllm.py
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 |
|
model_name
property
¶
返回用于 LLM 的模型名称。
load()
¶
使用路径或 Hugging Face Hub 仓库 ID 加载 vLLM
模型。此外,此方法还为 tokenizer 设置 chat_template
,以便正确解析 OpenAI 格式的输入列表,使用模型期望的格式,否则,默认值为 ChatML 格式,除非显式提供。
源代码位于 src/distilabel/models/llms/vllm.py
unload()
¶
prepare_input(input)
¶
为提供的输入准备输入(应用聊天模板和分词)。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
input
|
Union[StandardInput, str]
|
包含聊天项的输入列表。 |
必需 |
返回
类型 | 描述 |
---|---|
str
|
要发送给 LLM 的提示。 |
源代码位于 src/distilabel/models/llms/vllm.py
_prepare_batches(inputs)
¶
通过按结构化输出对输入进行分组来准备输入。
当我们使用从数据集获得的模式生成结构化输出时,我们需要准备数据,尝试将批量输入而不是单个输入发送到模型,以利用引擎的优势。因此,我们将输入按结构化输出分组,以便在 generate
方法中传递。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
inputs
|
List[StructuredInput]
|
传递给 generate 方法的输入批次。由于我们期望生成结构化输出,因此每个元素都将是一个元组,其中包含指令和结构化输出。 |
必需 |
返回
类型 | 描述 |
---|---|
List[Tuple[List[str], OutlinesStructuredOutputType]]
|
准备好的批次(子批次)将传递给 |
List[int]
|
每个新元组将包含指令列表,而不是单个指令 |
源代码位于 src/distilabel/models/llms/vllm.py
generate(inputs, num_generations=1, max_new_tokens=128, presence_penalty=0.0, frequency_penalty=0.0, repetition_penalty=1.0, temperature=1.0, top_p=1.0, top_k=-1, min_p=0.0, logprobs=None, stop=None, stop_token_ids=None, include_stop_str_in_output=False, skip_special_tokens=True, logits_processors=None, extra_sampling_params=None, echo=False)
¶
为每个输入生成 num_generations
个响应。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
inputs
|
List[FormattedInput]
|
聊天格式的输入列表,用于生成响应。 |
必需 |
num_generations
|
int
|
每个输入要创建的代数。默认为 |
1
|
max_new_tokens
|
int
|
模型将生成的最大新 token 数。默认为 |
128
|
presence_penalty
|
float
|
用于存在的惩罚。默认为 |
0.0
|
frequency_penalty
|
float
|
用于生成的重复惩罚。默认为 |
0.0
|
repetition_penalty
|
float
|
用于生成的重复惩罚。默认为 |
1.0
|
temperature
|
float
|
用于生成的温度。默认为 |
1.0
|
top_p
|
float
|
用于生成的 top-p 值。默认为 |
1.0
|
top_k
|
int
|
用于生成的 top-k 值。默认为 |
-1
|
min_p
|
float
|
用于生成的最小概率。默认为 |
0.0
|
logprobs
|
Optional[PositiveInt]
|
每个输出 token 返回的对数概率数。如果为 |
None
|
stop
|
Optional[List[str]]
|
一个字符串列表,当找到这些字符串时,将用于停止生成。默认为 |
None
|
stop_token_ids
|
Optional[List[int]]
|
一个 token ID 列表,当找到这些 token ID 时,将用于停止生成。默认为 |
None
|
include_stop_str_in_output
|
bool
|
是否在输出中包含停止字符串。默认为 |
False
|
skip_special_tokens
|
bool
|
是否从输出中排除特殊 token。默认为 |
True
|
logits_processors
|
Optional[LogitsProcessors]
|
一个函数列表,用于在采样之前处理 logits。默认为 |
None
|
extra_sampling_params
|
Optional[Dict[str, Any]]
|
包含要传递给 |
None
|
echo
|
bool
|
是否在响应中回显包含 prompt。默认为 |
False
|
返回
类型 | 描述 |
---|---|
List[GenerateOutput]
|
包含每个输入的生成响应的字符串列表的列表。 |
源代码位于 src/distilabel/models/llms/vllm.py
329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 |
|
_prepare_structured_output(structured_output)
¶
创建适当的函数来过滤 token,以生成结构化输出。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
structured_output
|
OutlinesStructuredOutputType
|
配置字典,用于准备结构化输出。 |
必需 |
返回
类型 | 描述 |
---|---|
Union[Callable, None]
|
将用于指导模型生成的 callable。 |
源代码位于 src/distilabel/models/llms/vllm.py
CudaDevicePlacementMixin
¶
基类:BaseModel
Mixin 类,用于根据 cuda_devices
属性和 _device_llm_placement_map
中提供的设备放置信息,将 CUDA 设备分配给 LLM
。提供设备放置信息是可选的,但如果提供,它将用于将 CUDA 设备分配给 LLM
,尽量避免为不同的 LLM
使用相同的设备。
属性
名称 | 类型 | 描述 |
---|---|---|
cuda_devices |
RuntimeParameter[Union[List[int], Literal['auto']]]
|
一个列表,包含 |
disable_cuda_device_placement |
RuntimeParameter[bool]
|
是否禁用 CUDA 设备放置逻辑。默认为 |
_llm_identifier |
Union[str, None]
|
|
_device_llm_placement_map |
Generator[Dict[str, List[int]], None, None]
|
一个字典,包含每个 |
源代码位于 src/distilabel/models/mixins/cuda_device_placement.py
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 |
|
load()
¶
根据 _device_llm_placement_map
中提供的设备放置信息,将 CUDA 设备分配给 LLM。
源代码位于 src/distilabel/models/mixins/cuda_device_placement.py
unload()
¶
卸载 LLM 并从 _device_llm_placement_map
中提供的设备放置信息中删除分配给它的 CUDA 设备。
源代码位于 src/distilabel/models/mixins/cuda_device_placement.py
_device_llm_placement_map()
¶
使用锁读取节点的设备放置文件的内容,生成内容,并在上下文管理器关闭后将内容写回文件。如果文件不存在,将生成一个空字典。
产生
类型 | 描述 |
---|---|
Dict[str, List[int]]
|
设备放置文件的内容。 |
源代码位于 src/distilabel/models/mixins/cuda_device_placement.py
_assign_cuda_devices()
¶
根据 _device_llm_placement_map
中提供的设备放置信息,将 CUDA 设备分配给 LLM。如果 cuda_devices
属性设置为“auto”,它将被设置为第一个可用的 CUDA 设备,该设备不会被任何其他 LLM 使用。如果 cuda_devices
属性设置为设备列表,将检查这些设备是否可供 LLM 使用。如果不可用,将记录警告。
源代码位于 src/distilabel/models/mixins/cuda_device_placement.py
_check_cuda_devices(device_map)
¶
检查分配给 LLM 的 CUDA 设备是否也分配给了其他 LLM。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
device_map
|
Dict[str, List[int]]
|
一个字典,包含每个 LLM 的设备放置信息。 |
必需 |
源代码位于 src/distilabel/models/mixins/cuda_device_placement.py
_get_cuda_device(device_map)
¶
返回第一个可供 LLM 使用的 CUDA 设备,该设备不会被任何其他 LLM 使用。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
device_map
|
Dict[str, List[int]]
|
一个字典,包含每个 LLM 的设备放置信息。 |
必需 |
返回
类型 | 描述 |
---|---|
Union[int, None]
|
第一个可供 LLM 使用的 CUDA 设备。 |
引发
类型 | 描述 |
---|---|
RuntimeError
|
如果没有可供 LLM 使用的 CUDA 设备。 |
源代码位于 src/distilabel/models/mixins/cuda_device_placement.py
_set_cuda_visible_devices()
¶
将 CUDA_VISIBLE_DEVICES
环境变量设置为 LLM 要使用的 CUDA 设备列表。