当前位置: 首页 > article >正文

hf_transformers

强者自定义,弱者用默认,傻逼不看说明书

1.

2.在 model.generate()里填参数,默认为20个新token

generated_ids = model.generate(**model_inputs, max_new_tokens=50)

3. 默认情况下,除非在GenerationConfig文件中指定,否则generate会在每个迭代中选择最可能的token(贪婪解码)。对于您的任务,这可能是不理想的;像聊天机器人或写作文章这样的创造性任务受益于采样。另一方面,像音频转录或翻译这样的基于输入的任务受益于贪婪解码。通过将do_sample=True启用采样

4.LMs是仅解码器架构,意味着它们会持续迭代您的输入提示。如果您的输入长度不相同,则需要对它们进行填充。由于LLMs没有接受过从pad tokens继续训练,因此您的输入需要左填充。确保在生成时不要忘记传递注意力掩码!

tokenizer = AutoTokenizer.from_pretrained("mistralai/Mistral-7B-v0.1", padding_side="left")

5.apply_chat_template在tokenizer中

一些模型和任务期望某种输入提示格式才能正常工作。当未应用此格式时,您将获得悄然的性能下降:

messages = [
...     {
...         "role": "system",
...         "content": "You are a friendly chatbot who always responds in the style of a thug",
...     },
...     {"role": "user", "content": "How many helicopters can a human eat in one sitting?"},
... ]
>>> model_inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to("cuda")

TextGenerationPipeline将负责处理所有的tokenized并调用apply_chat_template,一旦模型有了聊天模板,您只需要初始化pipeline并传递消息列表!

from transformers import pipeline

pipe = pipeline("text-generation", "HuggingFaceH4/zephyr-7b-beta")
messages = [
    {
        "role": "system",
        "content": "You are a friendly chatbot who always responds in the style of a pirate",
    },
    {"role": "user", "content": "How many helicopters can a human eat in one sitting?"},
]
print(pipe(messages, max_new_tokens=256)['generated_text'][-1]

6.当你对模型配置满意时,可以使用 save_pretrained() 来保存配置。你的配置文件将以 JSON 文件的形式存储在指定的保存目录中:

>>> my_config.save_pretrained(save_directory="./your_model_save_path")

要重用配置文件,请使用 from_pretrained() 进行加载:

>>> my_config = DistilBertConfig.from_pretrained("./your_model_save_path/config.json")

 7.通过切换到不同的模型头,可以轻松地将此检查点重复用于其他任务。对于问答任务,你可以使用 DistilBertForQuestionAnswering 模型头。问答头(question answering head)与序列分类头类似,不同点在于它是隐藏状态输出之上的线性层。

8.PreTrainedTokenizer:分词器的Python实现

PreTrainedTokenizerFast:来自我们基于 Rust 的 🤗 Tokenizer 库的分词器。因为其使用了 Rust 实现,这种分词器类型的速度要快得多,尤其是在批量分词(batch tokenization)的时候。快速分词器还提供其他的方法,例如偏移映射(offset mapping),它将标记(token)映射到其原始单词或字符。

 9.torch.cuda.empty_cache()

10.编写自定义配置时需要记住的三个重要事项如下:

  • 必须继承自 PretrainedConfig
  • PretrainedConfig 的 __init__ 方法必须接受任何 kwargs,
  • 这些 kwargs 需要传递给超类的 __init__ 方法。


http://www.kler.cn/a/382798.html

相关文章:

  • 使用亚马逊 S3 连接器为 PyTorch 和 MinIO 创建地图式数据集
  • Ubuntu 22.04.5 LTS 安装Python 3.12 从源代码安装指南(2024年10月28日亲测)
  • 《重学Java设计模式》之 建造者模式
  • springboot集成opencv开源计算机视觉库
  • GESP4级考试语法知识(算法概论(三))
  • yolo继续训练模型
  • 五、Java并发 Java Google Guava 实现
  • 解决CORS (跨源资源共享) 错误
  • RabbitMQ 实现消息队列负载均衡
  • 光纤定向耦合器
  • 基于vue框架的的冷链食品物流信息管理系统v81wb(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • postman入参file的接口测试
  • 初识CSS
  • CSS综合练习
  • 使用 GitHub Actions 部署到开发服务器的详细指南
  • 如何学习Python编程?
  • Qt桌面应用开发 第二天(信号和槽 Lambda表达式)
  • 中级图像处理工具
  • web——warmup——攻防世界
  • csrf令牌
  • 计算机视觉读书系列(1)——基本知识与深度学习基础
  • 【计算机网络】TCP协议面试常考(一)
  • 2024 Web3.0创新大赛在沪正式启动
  • 微服务之间的信息传递---OpenFeign拦截器
  • [OS] Prerequisite Knowledge about xv6
  • 【LeetCode】【算法】155. 最小栈