人工智能+聊天机器人+深度学习+学习与开发实践
资源文件列表:

AI_chatbot/
AI_chatbot/AI聊天机器人入门项目.pdf 1.77MB
__MACOSX/AI_chatbot/._AI聊天机器人入门项目.pdf 312B
AI_chatbot/.DS_Store 6KB
__MACOSX/AI_chatbot/._.DS_Store 120B
AI_chatbot/requirements.txt 1.19KB
AI_chatbot/webui.py 245B
AI_chatbot/Dockerfile 465B
AI_chatbot/models/
AI_chatbot/model.py 1.04KB
AI_chatbot/flagged/
AI_chatbot/main.py 361B
AI_chatbot/models/.DS_Store 6KB
__MACOSX/AI_chatbot/models/._.DS_Store 120B
AI_chatbot/models/chat/
AI_chatbot/flagged/log.csv 4.23KB
AI_chatbot/models/chat/.DS_Store 6KB
__MACOSX/AI_chatbot/models/chat/._.DS_Store 120B
AI_chatbot/models/chat/chatlm/
AI_chatbot/models/chat/chatlm/.DS_Store 6KB
__MACOSX/AI_chatbot/models/chat/chatlm/._.DS_Store 120B
AI_chatbot/models/chat/chatlm/tokenizer_config.json 1.39KB
AI_chatbot/models/chat/chatlm/special_tokens_map.json 75B
AI_chatbot/models/chat/chatlm/config.json 803B
AI_chatbot/models/chat/chatlm/tokenizer.json 1.03MB
AI_chatbot/models/chat/chatlm/generation_config.json 142B
AI_chatbot/models/chat/chatlm/README.md 187.41KB
AI_chatbot/models/chat/chatlm/configuration_chat_model.py 95B
AI_chatbot/models/chat/chatlm/modeling_chat_model.py 3.13KB
资源介绍:
深度学习资源包:本套资料专为初学者和进阶者设计的AI聊天机器人项目,包括Python编程、PyTorch框架应用、T5模型及Huggingface模型库使用,旨在帮助用户快速掌握人工智能领域的关键技术,适用于学术研究、项目开发及个人技能提升。
# 中文对话0.2B小模型 ChatLM-Chinese-0.2B
中文 | [English](https://github.com/charent/ChatLM-mini-Chinese/blob/main/README.en.md)
最新的readme文档请移步Github仓库[ChatLM-mini-Chinese](https://github.com/charent/ChatLM-mini-Chinese)
# 一、👋介绍
现在的大语言模型的参数往往较大,消费级电脑单纯做推理都比较慢,更别说想自己从头开始训练一个模型了。本项目的目标是整理生成式语言模型的训练流程,包括数据清洗、tokenizer训练、模型预训练、SFT指令微调、RLHF优化等。
ChatLM-mini-Chinese为中文对话小模型,模型参数只有0.2B(算共享权重约210M),可以在最低4GB显存的机器进行预训练(`batch_size=1`,`fp16`或者` bf16`),`float16`加载、推理最少只需要512MB显存。
- 公开所有预训练、SFT指令微调、DPO偏好优化数据集来源。
- 使用`Huggingface`NLP框架,包括`transformers`、`accelerate`、`trl`、`peft`等。
- 自实现`trainer`,支持单机单卡、单机多卡进行预训练、SFT微调。训练过程中支持在任意位置停止,及在任意位置继续训练。
- 预训练:整合为端到端的`Text-to-Text`预训练,非`mask`掩码预测预训练。
- 开源所有数据清洗(如规范化、基于mini_hash的文档去重等)、数据集构造、数据集加载优化等流程;
- tokenizer多进程词频统计,支持`sentencepiece`、`huggingface tokenizers`的tokenizer训练;
- 预训练支持任意位置断点,可从断点处继续训练;
- 大数据集(GB级别)流式加载、支持缓冲区数据打乱,不利用内存、硬盘作为缓存,有效减少内存、磁盘占用。配置`batch_size=1, max_len=320`下,最低支持在16GB内存+4GB显存的机器上进行预训练;
- 训练日志记录。
- SFT微调:开源SFT数据集及数据处理过程。
- 自实现`trainer`支持prompt指令微调, 支持任意断点继续训练;
- 支持`Huggingface trainer`的`sequence to sequence`微调;
- 支持传统的低学习率,只训练decoder层的微调。
- 偏好优化:使用DPO进行全量偏好优化。
- 支持使用`peft lora`进行偏好优化;
- 支持模型合并,可将`Lora adapter`合并到原始模型中。
- 支持下游任务微调:[finetune_examples](https://github.com/charent/ChatLM-mini-Chinese/blob/main/finetune_examples/info_extract/finetune_IE_task.ipynb)给出**三元组信息抽取任务**的微调示例,微调后的模型对话能力仍在。
🟢**最近更新**
2024-01-07
- 添加数据清洗过程中基于mini hash实现的文档去重(在本项目中其实数据集的样本去重),防止模型遇到多次重复数据后,在推理时吐出训练数据。- 添加`DropDatasetDuplicate`类实现对大数据集的文档去重。
2023-12-29
- 更新模型代码(权重不变),可以直接使用`AutoModelForSeq2SeqLM.from_pretrained(...)`加载模型使用。- 更新readme文档。
2023-12-18
- 补充利用`ChatLM-mini-0.2B`模型微调下游三元组信息抽取任务代码及抽取效果展示 。- 更新readme文档。
2023-12-14
- 更新SFT、DPO后的模型权重文件。- 更新预训练、SFT及DPO脚本。
- 更新`tokenizer`为`PreTrainedTokenizerFast`。
- 重构`dataset`代码,支持动态最大长度,每个批次的最大长度由该批次的最长文本决定,节省显存。
- 补充`tokenizer`训练细节。
2023-12-04
- 更新`generate`参数及模型效果展示。- 更新readme文档。