You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Salesforce/codegen-350M-mono本地生成结果与API一致?

解决Salesforce/codegen-350M-mono本地生成文本过短的问题

核心调整方案

1. 修复attention_mask缺失问题

本地输出的警告明确提示未设置attention_mask,这会导致模型生成逻辑不稳定。修改输入处理代码,补充该参数:

# 替换原input_ids生成代码
inputs = tokenizer(text, return_tensors="pt")
input_ids = inputs["input_ids"].to(device)
attention_mask = inputs["attention_mask"].to(device)

后续在model.generate中传入attention_mask参数。

2. 调整生成参数以延长输出并匹配API逻辑

默认的generate方法采用greedy搜索模式,且生成长度受限,容易过早终止在return语句。需添加以下关键参数:

  • max_new_tokens:指定最大生成新token数,设置为50及以上保证足够长度
  • do_sample:启用采样模式,替代greedy搜索,避免过早停止
  • temperature:调整生成随机性,非0值会让输出更灵活(API通常使用此类设置)
  • top_p:核采样,控制生成内容的多样性

修改后的生成调用代码:

generated_ids = model.generate(
    input_ids,
    attention_mask=attention_mask,
    max_new_tokens=50,
    temperature=0.7,
    top_p=0.95,
    do_sample=True,
    pad_token_id=tokenizer.eos_token_id
)

3. 显式指定pad_token_id

虽然代码已设置tokenizer.pad_token = tokenizer.eos_token,但在generate中显式指定该参数可彻底消除警告并避免潜在异常。

完整修改代码

import datasets
from transformers import AutoModelForCausalLM, AutoTokenizer

checkpoint = "Salesforce/codegen-350M-mono"
device = "cpu"

tokenizer = AutoTokenizer.from_pretrained(checkpoint)
tokenizer.pad_token = tokenizer.eos_token
model = AutoModelForCausalLM.from_pretrained(checkpoint, trust_remote_code=True).to(device)

text = """def round_to_multiple(num, mult):
    \"\"\"Rounds to nearest multiple of another number.\"\"\"
    """
# 生成包含attention_mask的输入
inputs = tokenizer(text, return_tensors="pt")
input_ids = inputs["input_ids"].to(device)
attention_mask = inputs["attention_mask"].to(device)

# 调整生成参数
generated_ids = model.generate(
    input_ids,
    attention_mask=attention_mask,
    max_new_tokens=50,
    temperature=0.7,
    top_p=0.95,
    do_sample=True,
    pad_token_id=tokenizer.eos_token_id
)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))

参数微调建议

  • 若需要更长输出,可增大max_new_tokens(如设为100)
  • 若希望生成更严谨的代码,可降低temperature(如设为0.3)
  • 若追求更多样的输出,可提高temperature并调整top_p值

内容的提问来源于stack exchange,提问作者matsuo_basho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 14:00:12