跳转至

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