《Born》第18章:文本生成——Tokenizer、采样策略与流式输出

从 logits 到文字,这是一条完整的生成管线。这一章拆解 Born 的文本生成系统。

从 logits 到文字,这是一条完整的生成管线。这一章拆解 Born 的文本生成系统。


生成管线全景

Prompt → Tokenizer.Encode → tokens
  → for i in range(maxTokens):
      logits = model.Forward(tokens, kvCache)
      nextToken = Sampler.Sample(logits[-1])
      tokens = append(tokens, nextToken)
      if stopConditionMet: break
  → Tokenizer.Decode(tokens) → 生成的文本


Tokenizer

// TikToken(GPT 系列)
tokenizer := tiktoken.New("cl100k_base")
tokens := tokenizer.Encode("Hello, world!")
// [15496, 11, 995, 0]

text := tokenizer.Decode(tokens)
// "Hello, world!"

Born 支持两种 tokenizer:TikToken(GPT/Claude 系列)和 BPE(BERT 系列)。


采样策略

sampler := nn.NewSampler(nn.SamplerConfig{
    Temperature: 0.8,    // 降低随机性
    TopK: 40,            // 只保留概率最高的 40 个 token
    TopP: 0.95,          // 累积概率达到 95% 时截断
    MinP: 0.05,          // 最低相对概率阈值
})

nextToken := sampler.Sample(logits)

参数作用典型值
Temperature控制随机性0.7-1.0
TopK限制候选集大小20-50
TopP动态截断0.9-0.95
MinP过滤低概率噪声0.01-0.05

流式输出

// 逐 token 输出,不等待整段生成完毕
for token := range generator.Generate(prompt) {
    text := tokenizer.Decode([]int{token})
    fmt.Print(text) // 实时输出
    os.Stdout.Sync()
}


📘 《Born》连载技术书,第 18/22 章。

👍 1

想参与讨论或点赞?登录后使用完整功能

讨论回复(0)

暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens