SamplingClient
改编自 Tinker SDK(Apache-2.0)
参考文档改编自 Tinker SDK,已为 Mint Recursive 做了调整。详见归属说明与 Apache 2.0 许可。
class mint.SamplingClient ( holder , sampling_session_id , shadow=False , retry_config=None , subprocess_sampling=None )¶
用于从训练好的模型或基座模型生成文本、执行推理的客户端。
SamplingClient 可以从基座模型生成 token,也可以从你用 TrainingClient 保存的权重生成。通常通过 service_client.create_sampling_client() 或 training_client.save_weights_and_get_sampling_client() 获取实例。
主要方法:
- sample() —— 用可自定义的参数生成文本补全
- compute_logprobs() —— 获取 prompt token 的对数概率
创建方法参数:
model_path:已保存的模型权重路径(以 'mindlab-toolkit://' 开头)base_model:用于推理的基座模型名称(如 'Qwen/Qwen3-8B')retry_config:失败请求的重试配置
sampling_client = service_client.create_sampling_client(base_model="Qwen/Qwen3-8B")
prompt = types.ModelInput.from_ints(tokenizer.encode("The weather today is"))
params = types.SamplingParams(max_tokens=20, temperature=0.7)
future = sampling_client.sample(prompt=prompt, sampling_params=params, num_samples=1)
result = future.result()
参数:
- holder ( InternalClientHolder )
- sampling_session_id ( str )
- shadow ( bool ,默认:
False) - retry_config ( RetryConfig | None ,默认:
None) - subprocess_sampling ( bool | None ,默认:
None)
sample ( prompt , num_samples , sampling_params , include_prompt_logprobs=False , topk_prompt_logprobs=0 )¶
从模型生成文本补全。
参数:
- prompt ( types. ModelInput ) —— 作为 ModelInput 的输入 token
- num_samples ( int ) —— 要生成的独立样本数
- sampling_params ( types. SamplingParams ) —— 控制生成的参数(temperature、max_tokens 等)
- include_prompt_logprobs ( bool ,默认:
False) —— 是否返回 prompt token 的对数概率 - topk_prompt_logprobs ( int ,默认:
0) —— 每个位置返回 top-k token 的对数概率个数
返回: 包含 SampleResponse 的 Future,其中带有生成的文本
prompt = types.ModelInput.from_ints(tokenizer.encode("The weather today is"))
params = types.SamplingParams(max_tokens=20, temperature=0.7)
future = sampling_client.sample(prompt=prompt, sampling_params=params, num_samples=1)
result = future.result()
for sample in result.samples:
print(tokenizer.decode(sample.tokens))
异步变体: sample_async()
compute_logprobs ( prompt )¶
计算 prompt token 的对数概率。
参数:
- prompt ( types. ModelInput ) —— 作为 ModelInput 的输入 token
返回: 包含 prompt 每个 token 对数概率列表的 Future。值为 None 表示该 token 的对数概率无法计算。
prompt = types.ModelInput.from_ints(tokenizer.encode("Hello world"))
future = sampling_client.compute_logprobs(prompt)
logprobs = future.result()
for i, logprob in enumerate(logprobs):
if logprob is not None:
print(f"Token {i}: logprob = {logprob:.4f}")
异步变体: compute_logprobs_async()
get_tokenizer ()¶
获取当前模型对应的 tokenizer。
返回: 与模型兼容的 PreTrainedTokenizer
get_base_model ()¶
获取当前采样 session 的基座模型名称。
返回: str
异步变体: get_base_model_async()
被引用¶
- ServiceClient.create_sampling_client
- TrainingClient.create_sampling_client
- TrainingClient.save_weights_and_get_sampling_client