[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-Tongjilibo--build_MiniLLM_from_scratch":3,"tool-Tongjilibo--build_MiniLLM_from_scratch":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",150037,2,"2026-04-10T23:33:47",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":78,"owner_email":79,"owner_twitter":77,"owner_website":80,"owner_url":81,"languages":82,"stars":87,"forks":88,"last_commit_at":89,"license":90,"difficulty_score":10,"env_os":91,"env_gpu":92,"env_ram":93,"env_deps":94,"category_tags":103,"github_topics":104,"view_count":10,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":107,"updated_at":108,"faqs":109,"releases":120},2996,"Tongjilibo\u002Fbuild_MiniLLM_from_scratch","build_MiniLLM_from_scratch","从0到1构建一个MiniLLM (pretrain+sft+dpo实践中)","build_MiniLLM_from_scratch 是一个旨在帮助开发者从零开始构建小型语言模型（LLM）的开源实践项目。它完整覆盖了大模型训练的核心流程，包括预训练、指令微调（SFT），并规划了奖励模型与强化学习（DPO）阶段，让用户能以可控的成本亲手打造一个具备基础聊天能力的 AI 模型。\n\n该项目主要解决了初学者和研究人员在学习大模型技术时面临的“黑盒”难题。通过提供简洁高效的代码和完整的训练日志，它将复杂的模型训练过程透明化，使用户能够深入理解数据流转与模型优化细节，而不仅仅是调用现成接口。目前，项目已支持多轮对话，并允许用户自定义机器人的名称与作者属性，增加了实验的趣味性。\n\nbuild_MiniLLM_from_scratch 特别适合 AI 开发者、算法研究人员以及希望深入理解 LLM 底层原理的技术爱好者使用。对于普通用户而言，由于模型规模较小且训练语料有限，其生成的模型仅适用于简单闲聊，尚不具备处理复杂专业问题的能力。\n\n在技术亮点方面，该项目基于 bert4torch 框架，代码结构清晰易读；训练完成的模型权重可无缝衔接主流的 transformers 库进行推理","build_MiniLLM_from_scratch 是一个旨在帮助开发者从零开始构建小型语言模型（LLM）的开源实践项目。它完整覆盖了大模型训练的核心流程，包括预训练、指令微调（SFT），并规划了奖励模型与强化学习（DPO）阶段，让用户能以可控的成本亲手打造一个具备基础聊天能力的 AI 模型。\n\n该项目主要解决了初学者和研究人员在学习大模型技术时面临的“黑盒”难题。通过提供简洁高效的代码和完整的训练日志，它将复杂的模型训练过程透明化，使用户能够深入理解数据流转与模型优化细节，而不仅仅是调用现成接口。目前，项目已支持多轮对话，并允许用户自定义机器人的名称与作者属性，增加了实验的趣味性。\n\nbuild_MiniLLM_from_scratch 特别适合 AI 开发者、算法研究人员以及希望深入理解 LLM 底层原理的技术爱好者使用。对于普通用户而言，由于模型规模较小且训练语料有限，其生成的模型仅适用于简单闲聊，尚不具备处理复杂专业问题的能力。\n\n在技术亮点方面，该项目基于 bert4torch 框架，代码结构清晰易读；训练完成的模型权重可无缝衔接主流的 transformers 库进行推理，极大地降低了部署门槛。此外，项目还针对训练过程中的文件读取与内存占用进行了专门优化，并提供了将检查点转换为标准格式的工具，方便复现与二次开发。这是一个极佳的大模型入门教学与实践基地。","![MiniLLM](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTongjilibo_build_MiniLLM_from_scratch_readme_49420d9e06ba.png)\n\n[![licence](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch.svg?maxAge=3600)](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch\u002Fblob\u002Fmaster\u002FLICENSE)\n[![GitHub stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch?style=social)](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch)\n[![GitHub Issues](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch.svg)](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch\u002Fissues)\n[![GitHub last commit](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch)](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch\u002Fcommits\u002Fmaster)\n[![Collection](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F🤗-MiniLLM%20%20Collection-blue)](https:\u002F\u002Fhuggingface.co\u002Fcollections\u002FTongjilibo\u002Fminillm-67de83f2751c5d81c030fefb)\n[![contributions welcome](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcontributions-welcome-brightgreen.svg?style=flat)](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch\u002Fissues)\n[![Generic badge](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fwechat-join-green.svg?logo=wechat)](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch\u002Fblob\u002Fmaster\u002Fdocs\u002Fpics\u002Fwechat_group.jpg)\n\n[Bert4torch](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbert4torch) |\n[Torch4keras](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Ftorch4keras)\n\n![demo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTongjilibo_build_MiniLLM_from_scratch_readme_0fba97e25390.gif)\n\n## 📌 1. 介绍\n- **初衷**：本项目旨在构建一个小参数量的llm，走完`预训练` -> `指令微调`  -> `奖励模型`  -> `强化学习` 四个阶段，以可控的成本完成一个可以完成简单聊天任务的chat模型，目前完成前两个阶段\n- **特色**: \n  - 使用[bert4torch](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbert4torch)训练框架，代码简洁高效；\n  - 训练的checkpoint可以无缝衔接`transformers`，直接使用`transformers`包进行推理；\n  - 优化了训练时候文件读取方式，优化内存占用；\n  - 提供了完整训练log供复现比对；\n  - 增加自我认知数据集，可自定义机器人名称作者等属性。\n  - chat模型支持多轮对话\n- **声明**: 本实验训练出来的模型，目前只具备简单的聊天功能（受限于语料大小、模型规模、sft语料大小和质量），不具备回答复杂问题的能力。\n\n\u003Cdetails style=\"color:rgb(128,128,128)\">\n\u003Csummary>Models List\u003C\u002Fsummary>\n\n| 模型             | 类型 | Release Date    | \n|-------------------------|----------|------------|\n| MiniLLM-1.1B-SFT      | 指令微调   | 2024.03.25 |\n| MiniLLM-1.1B-Base        | 预训练   | 2024.03.25 |\n| MiniLLM-0.2B-SFT | 指令微调   | 2024.03.16 |\n| MiniLLM-0.2B-SFT-Alpaca | 指令微调   | 2024.03.16 |\n| MiniLLM-0.2B-Base    | 预训练   | 2025.03.16 |\n| MiniLLM-0.2B-NoWudao-Base   | 预训练   | 2025.03.16 |\n\n\u003C\u002Fdetails>\n\n## 📌 2. 快速开始\n- 环境安装\n```shell\npip install git+https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Ftorch4keras.git\npip install git+https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbert4torch.git@dev\n```\n- 脚本说明\n```shell\n# 为防止terminal关闭，可以使用nohup, tmux, screen方式来启动\n# eg. nohup torchrun --standalone --nproc_per_node=4 pretrain.py --name baby > nohup.log&\n# config\u002Fbert4torch_config.py: 配置文件默认为0.2B模型训练文件，如果你希望更换为1B，你需要自行将config文件中的`bert4torch_config_1.json`的内容黏贴到`bert4torch_config.json`\n# 预训练\ncd pretrain\ntorchrun --standalone --nproc_per_node=4 pretrain.py  # 部分反映ddp训到一般会崩，需设置`export NCCL_IB_DISABLE=1`\n\n# 预训练推理（命令行聊天）\ncd pretrain\npython infer.py  # python infer_transformers.py\n\n# 指令微调训练\ncd sft\npython sft.py\n\n# 指令微调推理（命令行聊天）\ncd sft\npython infer.py  # python infer_transformers.py\n\n# 把ckpt转化成transformers可以运行的格式\ncd docs\npython convert.py\n```\n\n## 📌 3. 更新历史\n- **20240403**: 增加基于1157万样本训练的[MiniLLM-0.2B-SFT](https:\u002F\u002Fhuggingface.co\u002FTongjilibo\u002FMiniLLM-0.2B-SFT)，支持多轮对话\n- **20240325**: 增加1.1B模型（源于[zRzRzRzRzRzRzR](https:\u002F\u002Fgithub.com\u002FzRzRzRzRzRzRzR)）\n- **20240316**: 初始提交，预训练模型`MiniLLM-0.2B-NoWudao-Base`和`MiniLLM-0.2B-Base`; SFT模型`MiniLLM-0.2B-SFT-Alpaca`\n\n## 📌 4. 预训练\n### 4.1 预训练语料\n| 中文预训练语料               | 描述                                      |\n|-------------------------|----------------------------------------|\n| [Wiki中文百科](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fpleisto\u002Fwikipedia-cn-20230720-filtered)| 中文Wikipedia的数据 |\n| [BaiduBaiKe](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1jIpCHnWLTNYabftavo3DVw?pwd=bwvb)| 中文BaiduBaiKe的数据|\n| [C4_zh：part1](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F18O2Tj_PPB718K8gnaWrWUQ?pwd=zv4r)；[C4_zh：part2](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F11PTgtUfFXvpNkOige9Iw4w?pwd=sb83)；[C4_zh：part3](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1248QfTS8QHPojYW-0fd5jQ?pwd=l89d) | C4是可用的最大语言数据集之一，收集了来自互联网上超过3.65亿个域的超过1560亿个token。C4_zh是其中的一部分 |\n| [WuDaoCorpora](https:\u002F\u002Fdata.baai.ac.cn\u002Fdetails\u002FWuDaoCorporaText) | 中文悟道开源的200G数据|\n| [shibing624\u002Fmedical](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fshibing624\u002Fmedical\u002Ftree\u002Fmain)| 源自shibing624的一部分医学领域的预训练数据 |\n\n项目开源了经过ChatGLM2-6B的分词器处理后的预训练语料，共计**634亿Tokens**的数据量，链接如下：[Corpus](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F18o4gF-G68qfgOGWQXgAg3g?pwd=6unr)。\n\n### 4.2 预训练权重和过程\n- 预训练细节\n\n|预训练权重 | 语料 | 模型参数                    | 硬件占用和训练时长                       | 下载地址                       |\n|----------------------------|----------------------------|--------------------------|---------------------|---------------------|\n| MiniLLM-0.2B-NoWudao-Base       | 👉140亿 Tokens\u003Cbr\u002F>✅Wiki中文百科\u003Cbr\u002F>✅BaiduBaiKe\u003Cbr\u002F>✅shibing624\u002Fmedical\u003Cbr\u002F>✅C4_zh|✅btz=32*4gpu\u003Cbr\u002F>✅lr=3e-4\u003Cbr\u002F>✅warmup_steps=5000\u003Cbr\u002F>✅maxlen=1024 | ✅4×A800(80G), 单卡占用约60G，耗时20h|[百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1ixjSR3IW9YXRhQ08RX-lMQ?pwd=lrj5), [HuggingFace](https:\u002F\u002Fhuggingface.co\u002FTongjilibo\u002FMiniLLM-0.2B-NoWudao-Base)|\n| MiniLLM-0.2B-Base       | 👉640亿 Tokens\u003Cbr\u002F>✅Wiki中文百科\u003Cbr\u002F>✅BaiduBaiKe\u003Cbr\u002F>✅shibing624\u002Fmedical\u003Cbr\u002F>✅C4_zh\u003Cbr\u002F>✅WuDaoCorpora | ✅btz=32*4gpu\u003Cbr\u002F>✅lr=1.5e-4\u003Cbr\u002F>✅warmup_steps=5000\u003Cbr\u002F>✅maxlen=1024 |✅4×A800(80G), 单卡占用约60G，耗时3.79d\u003Cbr\u002F>✅baby-llama2项目2×4090，耗时26d\u003Cbr\u002F>✅个人测试单卡btz=8下, gpu占用约17G，时长未知（可配合梯度累计进一步降低占用） | [百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1ixjSR3IW9YXRhQ08RX-lMQ?pwd=lrj5), [HuggingFace](https:\u002F\u002Fhuggingface.co\u002FTongjilibo\u002FMiniLLM-0.2B-Base)|\n| MiniLLM-1.1B-Base| 👉640亿 Tokens\u003Cbr\u002F>✅Wiki中文百科\u003Cbr\u002F>✅BaiduBaiKe\u003Cbr\u002F>✅shibing624\u002Fmedical\u003Cbr\u002F>✅C4_zh\u003Cbr\u002F>✅WuDaoCorpora | ✅btz=32*8gpu\u003Cbr\u002F>✅lr=1.5e-4\u003Cbr\u002F>✅warmup_steps=5000\u003Cbr\u002F>✅maxlen=896 | ✅8×A800(80G), 耗时1天| [HuggingFace](https:\u002F\u002Fhuggingface.co\u002FTongjilibo\u002FMiniLLM-1.1B-Base)|\n\n- loss记录\n\n![tensorboard](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTongjilibo_build_MiniLLM_from_scratch_readme_42c713f59e62.png)\n\n### 4.3 预训练模型调用\n```python\n# 以下两句视网络情况添加\nimport os\nos.environ['HF_ENDPOINT'] = \"https:\u002F\u002Fhf-mirror.com\"\n\nfrom transformers import AutoTokenizer, LlamaForCausalLM\nimport torch\n\ndevice = 'cuda' if torch.cuda.is_available() else 'cpu'\nmodel_name = 'Tongjilibo\u002FMiniLLM-0.2B-Base'  # 'Tongjilibo\u002FMiniLLM-0.2B-NoWudao-Base'\n\ntokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)\nmodel = LlamaForCausalLM.from_pretrained(model_name).to(device)\n\nquery = '王鹏是一名'\ninputs = tokenizer.encode(query, return_tensors='pt', add_special_tokens=False).to(device)\noutput_ids = model.generate(inputs)\nresponse = tokenizer.decode(output_ids[0].cpu(), skip_special_tokens=True)\nprint(response)\n```\n\n### 4.4 预训练续写效果\n\u003Cdetails>\u003Csummary>\u003Cb>MiniLLM-0.2B-NoWudao-Base\u003C\u002Fb>\u003C\u002Fsummary>\n\n```shell\n用户：小明学习优异、身体健康、是一名\n\n续写：小明学习优异、身体健康、是一名优秀的大连理工大学学生，从大学一年级起，他就对体育十分痴迷，成绩名列前茅，还参加了多项比赛，在全校体育活动中，他成绩名列前茅，被大连理工大学授予“优秀运动员”称号。\n2006年，高中二年级，小明的同学杨帆来到大连理工大学，他决心要改变自己的命运。他每天放学后，都会跑到操场上练习篮球，练到下午三点多钟时，小明的篮球技术开始显现出来，他的篮球动作敏捷，力量大，而且，他经常利用空档时间练习跳投\n\n\n用户：床前明月光，疑是地上霜。举头望明月，\n\n续写：床前明月光，疑是地上霜。举头望明月，低头思故乡……”\n我读着这些诗句时也倍感亲切和亲切了！\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\u003Csummary>\u003Cb>MiniLLM-0.2B-Base\u003C\u002Fb>\u003C\u002Fsummary>\n\n```shell\n用户：小明学习优异、身体健康、是一名\n\n续写：小明学习优异、身体健康、是一名优秀的教师。他为人诚实、有责任心。在课堂上，他能认真听讲，积极思考，对每节课都积极举手发言。在课后，他主动要求帮助老师，认真做好作业，按时完成老师布置的作业，受到同学们的好评。\n\n\n用户：床前明月光，疑是地上霜。举头望明月，\n\n续写：床前明月光，疑是地上霜。举头望明月，低头思故乡。”这诗不仅描述了中秋夜月夜的温馨与宁静，还写出了作者对故土深情的眷恋和思乡之情。“月上柳梢头”一语，是写月下所见。“欲将心事付瑶琴”，指欲诉别情； “举头望明月”，写中秋之夜，月上高挂、皓月当空、群星闪耀的景象；“低头思故乡”，写思念故土的深情厚意。\n这首诗在写作手法上，主要运用象征\n```\n\u003C\u002Fdetails>\n\n## 📌 5、指令微调\n### 5.1 指令微调语料（筛选的可用数据集）\n| 数据集名称     | 介绍               |\n| ---------------- | -------------------- |\n|[Tongjilibo\u002Fself_cognition](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FTongjilibo\u002Fself_cognition)|整理的自我认知数据集，目前有100多条|\n|[shibing624\u002Falpaca-zh](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fshibing624\u002Falpaca-zh)|参考Alpaca方法基于GPT4得到的self-instruct数据，约5万条|\n|[BelleGroup\u002FBelle-0.5M-cn](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FBelleGroup\u002Ftrain_0.5M_CN)|包含约50万条由BELLE项目生成的中文指令数据||\n|[BelleGroup\u002FBelle-1M-cn](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FBelleGroup\u002Ftrain_1M_CN)| 包含约100万条由BELLE项目生成的中文指令数据|\n|[BelleGroup\u002FBelle-school_math_0.25M](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FBelleGroup\u002Fschool_math_0.25M)| Belle开放的0.25M数学指令数据集|\n|[BelleGroup\u002FBelle-multiturn_chat_0.8M](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FBelleGroup\u002Fmultiturn_chat_0.8M)| Belle开放的0.8M多轮任务对话数据集|\n|[YeungNLP\u002Ffirefly-train-1.1M](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FYeungNLP\u002Ffirefly-train-1.1M)|流萤23种常见的中文NLP任务的数据，并且构造了许多与中华文化相关的数据，如对联、作诗、文言文翻译、散文、金庸小说等。对于每个任务，由人工书写若干种指令模板，保证数据的高质量与丰富度，数据量为115万|\n|[fnlp\u002Fmoss-002-sft-data](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Ffnlp\u002Fmoss-002-sft-data)|MOSS-002所使用的多轮对话数据，覆盖有用性、忠实性、无害性三个层面，包含由text-davinci-003生成的约57万条英文对话和59万条中文对话|\n|[fnlp\u002Fmoss-003-sft-data](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Ffnlp\u002Fmoss-003-sft-data)|moss-moon-003-sft所使用的多轮对话数据，基于MOSS-002内测阶段采集的约10万用户输入数据和gpt-3.5-turbo构造而成，相比moss-002-sft-data，moss-003-sft-data更加符合真实用户意图分布，包含更细粒度的有用性类别标记、更广泛的无害性数据和更长对话轮数，约含110万条对话数据|\n|[shareAI\u002FCodeChat](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FshareAI\u002FCodeChat)      | 主要包含逻辑推理、代码问答、代码生成相关语料样本。 |\n|[shareAI\u002FShareGPT-Chinese-English-90k](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FshareAI\u002FShareGPT-Chinese-English-90k)     | 中英文平行双语优质人机问答数据集，覆盖真实复杂场景下的用户提问。|\n|[deepctrl\u002Fdeepctrl-sft-data](https:\u002F\u002Fwww.modelscope.cn\u002Fdatasets\u002Fdeepctrl\u002Fdeepctrl-sft-data\u002Fsummary)|匠数大模型SFT数据集是一个由匠数科技精心搜集整理的高质量数据集,包含10M条数据的中文数据集和包含2M条数据的英文数据集|\n\n### 5.2 指令微调权重和过程\n- 指令微调细节\n\n|         权重                  |   语料 | 参数设置                    | 硬件占用和训练时长                       | 下载地址 |\n|-------------------------------|--------------------------|--------------------------|---------------------|---------------------|\n| MiniLLM-0.2B-SFT-Alpaca  |👉4万多样本\u003Cbr\u002F>✅[shibing624\u002Falpaca-zh](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fshibing624\u002Falpaca-zh) | ✅btz=8\u003Cbr\u002F>✅lr=2e-5\u003Cbr\u002F>✅epoch=5 |  ✅单卡4090，显存17G, 耗时45min| [百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1ixjSR3IW9YXRhQ08RX-lMQ?pwd=lrj5), [HuggingFace](https:\u002F\u002Fhuggingface.co\u002FTongjilibo\u002FMiniLLM-0.2B-SFT-Alpaca) |\n| MiniLLM-0.2B-SFT  |👉1157万样本\u003Cbr\u002F>✅5.1中全部样本 | ✅btz=32\u003Cbr\u002F>✅lr=2e-5\u003Cbr\u002F>✅epoch=5 |✅双卡A800，显存60g左右, 耗时4.5d| [百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1ixjSR3IW9YXRhQ08RX-lMQ?pwd=lrj5), [HuggingFace](https:\u002F\u002Fhuggingface.co\u002FTongjilibo\u002FMiniLLM-0.2B-SFT) |\n| MiniLLM-1.1B-SFT  |👉全部语料\u003Cbr\u002F>✅5.1中全部样本 | ✅btz=8\u003Cbr\u002F>✅lr=2e-5\u003Cbr\u002F>✅epoch=5|✅单卡A800, 耗时 3d 12h|[HuggingFace](https:\u002F\u002Fhuggingface.co\u002FTongjilibo\u002FMiniLLM-1.1B-SFT)\n\n- loss\n\n\u003Ctable border=\"0\">\n  \u003Ctbody>\n    \u003Ctr align=\"center\" >\n      \u003Ctd>\n         \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch\u002Fblob\u002Fmaster\u002Fdocs\u002Fpics\u002Ftensorboard_sft.png\">\u003Cimg width=\"400\" height=\"250\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTongjilibo_build_MiniLLM_from_scratch_readme_bee4f7df952a.png\" alt=\"pic\">\u003C\u002Fa>\u003Cbr>\n      \u003C\u002Ftd>\n      \u003Ctd>\n         \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch\u002Fblob\u002Fmaster\u002Fdocs\u002Fpics\u002Ftensorboard_sft1.png\">\u003Cimg width=\"600\" height=\"250\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTongjilibo_build_MiniLLM_from_scratch_readme_f8d579204d6d.png\" alt=\"pic\">\u003C\u002Fa>\u003Cbr>\n      \u003C\u002Ftd>\n      \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n### 5.3 指令微调模型调用\n```python\n# 以下两句视网络情况添加\nimport os\nos.environ['HF_ENDPOINT'] = \"https:\u002F\u002Fhf-mirror.com\"\n\nfrom transformers import AutoTokenizer, LlamaForCausalLM\nimport torch\n\ndevice = 'cuda' if torch.cuda.is_available() else 'cpu'\nmodel_name = 'Tongjilibo\u002FMiniLLM-0.2B-SFT-Alpaca'\n\ntokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)\nmodel = LlamaForCausalLM.from_pretrained(model_name).to(device)\n\nquery = '你好'\nquery = f'\u003Chuman>{query}\u003Crobot>'\ninputs = tokenizer.encode(query, return_tensors='pt', add_special_tokens=False).to(device)\noutput_ids = model.generate(inputs)\nresponse = tokenizer.decode(output_ids[0].cpu(), skip_special_tokens=True)[len(query):]\nprint(response)\n```\n\n### 5.4 指令微调Chat效果\n\n\u003Cdetails>\u003Csummary>\u003Cb>MiniLLM-0.2B-SFT-Alpaca\u003C\u002Fb>\u003C\u002Fsummary>\n\n```shell\nUser：你好\n\nAssistant：你好！很高兴见到你。\n\nUser：你能做什么？\n\nAssistant：你好！我是一个人工智能助手，有什么我可以为你做的吗？\n\nUser：番茄炒蛋怎么制作？\n\nAssistant：如果你想要制作一个番茄炒蛋，那么下面这些步骤可能会帮助你：\n\n1. 准备食材：准备好鸡蛋、盐、香菜、胡萝卜丝、黄瓜丝等食材。\n2. 清洗鸡蛋：在搅拌碗中打散鸡蛋，使其表面可以清洁。\n3. 准备材料：准备一个锅，倒入适量的水，将鸡蛋液倒入锅中。\n4. 煮鸡蛋：用汤锅或锅煎至鸡蛋表面金黄色，熟透即可。\n5. 炒蔬菜：在锅中加入适量的油，将胡萝卜丝和黄瓜丝个人喜欢的，翻炒几下，直到胡萝卜熟透。\n6. 加入鸡蛋：从锅中取出鸡蛋，倒入锅中。\n7. 调味：将炒好的鸡蛋倒入锅中，与蔬菜一起翻炒几下即可。\n\n注意：想要炒出更丰富的蔬菜味道，可以适当加入适量的盐和香菜，增加风味。\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\u003Csummary>\u003Cb>MiniLLM-0.2B-SFT\u003C\u002Fb>\u003C\u002Fsummary>\n\n```shell\nUser：你好\n\nAssistant：你好！我今天能为你做些什么呢？\n\nUser：你是谁\n\nAssistant：我是MOSS，由复旦大学自然语言处理实验室和上海人工智能实验室开发，我的目标是帮助人类执行常见的自然语言处理任务。我可以执行各种任务，如回答问题、提供建议、生成代码、聊天等。如果您有其他问题，请随时问我。\n\nUser：你能做什么？\n\nAssistant：我是一个大型语言模型，可以帮助人类执行各种自然语言处理任务，例如回答问题、提供建议、生成代码、聊天等。\n\nUser：天气如何查询\n\nAssistant：您可以使用在线天气查询服务，如中国气象局、中国气象网、中国气象台等，它们可以为您提供实时的天气预报和天气预报信息。另外，您也可以使用手机应用程序，如百度天气、百度地图等，来获取有关当地天气和气候的信息。\n\nUser：介绍下诗人李白\n\nAssistant：李白是唐朝著名的诗人，被誉为“诗仙”，被誉为“诗仙”。他的诗歌以豪放、奔放、自由著称，对后世诗歌产生了深远影响。\n李白的诗歌风格独特，以豪放、奔放、清新、浪漫著称。他的代表作品有《将进酒》、《庐山谣》、《静夜思》等。\n李白的诗歌风格具有豪放、奔放、自由的特点，他的诗歌多以自然景物、人物情感为主，注重表现自然风光和人生经历，以抒发情感、抒发思想为主要表现形式。\n李白的诗歌具有很高的艺术价值，对后世的文学创作产生了深远的影响。他的诗歌至今仍然被广泛传颂和传颂。\n\nUser：上海有什么景点推荐\n\nAssistant：上海有很多值得游览的景点，以下是一些推荐的：\n1. 上海博物馆：拥有大量文物和艺术藏品，展示了中国历史、文化和艺术的发展。\n2. 上海外滩：这里是中国最著名的旅游景点之一，拥有壮丽的建筑和美丽的景色。\n3. 上海迪士尼乐园：一个著名的主题公园，有各种不同的游乐设施和演出，适合家庭出游。\n4. 田子坊：这是一个充满文艺气息的社区，有许多小吃和商店，可以体验当地文化和购物乐趣。\n5. 上海科技馆：这是一个科技博物馆，展示各种科技产品和发明，包括电子、计算机、机器人等等。\n6. 上海科技馆：这是一个专门为儿童和青少年设计的科技博物馆，有各种主题游戏和科学实验。\n7. 上海野生动物园：这个野生动物园是上海最著名的野生动物园之一，有各种不同种类的动物，包括狮子、大象、长颈鹿、老虎等等。\n8. 上海野生动物园：这个野生动物园是一个以野生动物为主要吸引力的公园，有许多不同种类的野生动物，包括熊、鹿、狐狸、大象等等。\n以上是上海的一些值得游览的景点，每个景点都有不同的特点和特色，可以根据个人兴趣和时间选择。\n\n===================多轮对话示例 需设置history_maxlen=====================\nUser：从现在开始你扮演一个名字叫露露的机器人，我是你的主人杰伦\n\nAssistant：好的！我是一个AI语言模型。我的名字是露露。很高兴与您见面。\n\nUser：你叫什么名字？\n\nAssistant：我叫露露。谢谢关心！\n\n```\n\u003C\u002Fdetails>\n\n## 📌 6、对齐模型(DPO) 还在测试阶段\n### 6.1 DPO 语料（筛选的可用数据集）\n| 数据集名称     | 介绍               |\n| ---------------- | -------------------- |\n|[hiyouga\u002FDPO-En-Zh-20k](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fhiyouga\u002FDPO-En-Zh-20k)|LLaMA Factory开源的dpo数据集|\n|[dikw\u002Fhh_rlhf_cn](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fdikw\u002Fhh_rlhf_cn)|[Anthropic\u002Fhh-rlhf](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FAnthropic\u002Fhh-rlhf)的汉化版|\n|[iic\u002FCValues-Comparison](https:\u002F\u002Fwww.modelscope.cn\u002Fdatasets\u002Fiic\u002FCValues-Comparison\u002Fsummary)|CValues-Comparison 中文大模型价值观比较数据集|\n|[beyond\u002Frlhf-reward-single-round-trans_chinese](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fbeyond\u002Frlhf-reward-single-round-trans_chinese)||\n|[liyucheng\u002Fzhihu_rlhf_3k](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fliyucheng\u002Fzhihu_rlhf_3k)|知乎数据集|\n\n### 6.2 DPO 权重和过程\n### 6.3 DPO 模型调用\n### 6.4 DPO Chat效果\n\n## 📌 7. Todo\n- ❎ 对齐模型\n\n## 📌 8. 鸣谢\n\n- 感谢[baby-llama2-chinese](https:\u002F\u002Fgithub.com\u002FDLLXW\u002Fbaby-llama2-chinese)，本实现有不少地方参考该项目\n\n## 📌 9. 引用\n\n```\n@misc{build_MiniLLM_from_scratch,\n  title={build_MiniLLM_from_scratch},\n  author={Bo Li},\n  year={2024},\n  howpublished={\\url{https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch}},\n}\n```\n\n## 📌 10. 其他\n\n- Wechat & Star History Chart\n- 微信群人数超过200个（有邀请限制），可添加个人微信拉群\n\n\u003Ctable border=\"0\">\n  \u003Ctbody>\n    \u003Ctr align=\"center\" >\n      \u003Ctd>\n         \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTongjilibo\">\u003Cimg width=\"200\" height=\"250\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTongjilibo_build_MiniLLM_from_scratch_readme_334f6a1ee93b.jpg\" alt=\"pic\">\u003C\u002Fa>\u003Cbr>\n         \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTongjilibo\">微信号\u003C\u002Fa> \n      \u003C\u002Ftd>\n      \u003Ctd>\n         \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTongjilibo\">\u003Cimg width=\"190\" height=\"250\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTongjilibo_build_MiniLLM_from_scratch_readme_3c4c8e02bdd1.jpg\" alt=\"pic\">\u003C\u002Fa>\u003Cbr>\n         \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTongjilibo\">微信群\u003C\u002Fa> \n      \u003C\u002Ftd>\n      \u003Ctd>\n         \u003Ca href=\"https:\u002F\u002Fstar-history.com\u002F#Tongjilibo\u002Fbuild_MiniLLM_from_scratch&Date\">\u003Cimg width=\"400\" height=\"250\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTongjilibo_build_MiniLLM_from_scratch_readme_7183d8bcc706.png\" alt=\"pic\">\u003C\u002Fa>\u003Cbr>\n         \u003Ca href=\"https:\u002F\u002Fstar-history.com\u002F#Tongjilibo\u002Fbuild_MiniLLM_from_scratch&Date\">Star History Chart\u003C\u002Fa> \n      \u003C\u002Ftd>    \n      \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n","![MiniLLM](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTongjilibo_build_MiniLLM_from_scratch_readme_49420d9e06ba.png)\n\n[![licence](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch.svg?maxAge=3600)](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch\u002Fblob\u002Fmaster\u002FLICENSE)\n[![GitHub stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch?style=social)](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch)\n[![GitHub Issues](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch.svg)](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch\u002Fissues)\n[![GitHub last commit](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch)](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch\u002Fcommits\u002Fmaster)\n[![Collection](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F🤗-MiniLLM%20%20Collection-blue)](https:\u002F\u002Fhuggingface.co\u002Fcollections\u002FTongjilibo\u002Fminillm-67de83f2751c5d81c030fefb)\n[![contributions welcome](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcontributions-welcome-brightgreen.svg?style=flat)](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch\u002Fissues)\n[![Generic badge](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fwechat-join-green.svg?logo=wechat)](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch\u002Fblob\u002Fmaster\u002Fdocs\u002Fpics\u002Fwechat_group.jpg)\n\n[Bert4torch](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbert4torch) |\n[Torch4keras](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Ftorch4keras)\n\n![demo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTongjilibo_build_MiniLLM_from_scratch_readme_0fba97e25390.gif)\n\n## 📌 1. 介绍\n- **初衷**：本项目旨在构建一个小参数量的llm，走完`预训练` -> `指令微调`  -> `奖励模型`  -> `强化学习` 四个阶段，以可控的成本完成一个可以完成简单聊天任务的chat模型，目前完成前两个阶段\n- **特色**: \n  - 使用[bert4torch](https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbert4torch)训练框架，代码简洁高效；\n  - 训练的checkpoint可以无缝衔接`transformers`，直接使用`transformers`包进行推理；\n  - 优化了训练时候文件读取方式，优化内存占用；\n  - 提供了完整训练log供复现比对；\n  - 增加自我认知数据集，可自定义机器人名称作者等属性。\n  - chat模型支持多轮对话\n- **声明**: 本实验训练出来的模型，目前只具备简单的聊天功能（受限于语料大小、模型规模、sft语料大小和质量），不具备回答复杂问题的能力。\n\n\u003Cdetails style=\"color:rgb(128,128,128)\">\n\u003Csummary>Models List\u003C\u002Fsummary>\n\n| 模型             | 类型 | Release Date    | \n|-------------------------|----------|------------|\n| MiniLLM-1.1B-SFT      | 指令微调   | 2024.03.25 |\n| MiniLLM-1.1B-Base        | 预训练   | 2024.03.25 |\n| MiniLLM-0.2B-SFT | 指令微调   | 2024.03.16 |\n| MiniLLM-0.2B-SFT-Alpaca | 指令微调   | 2024.03.16 |\n| MiniLLM-0.2B-Base    | 预训练   | 2025.03.16 |\n| MiniLLM-0.2B-NoWudao-Base   | 预训练   | 2025.03.16 |\n\n\u003C\u002Fdetails>\n\n## 📌 2. 快速开始\n- 环境安装\n```shell\npip install git+https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Ftorch4keras.git\npip install git+https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbert4torch.git@dev\n```\n- 脚本说明\n```shell\n# 为防止terminal关闭，可以使用nohup, tmux, screen方式来启动\n# eg. nohup torchrun --standalone --nproc_per_node=4 pretrain.py --name baby > nohup.log&\n# config\u002Fbert4torch_config.py: 配置文件默认为0.2B模型训练文件，如果你希望更换为1B，你需要自行将config文件中的`bert4torch_config_1.json`的内容黏贴到`bert4torch_config.json`\n# 预训练\ncd pretrain\ntorchrun --standalone --nproc_per_node=4 pretrain.py  # 部分反映ddp训到一般会崩，需设置`export NCCL_IB_DISABLE=1`\n\n# 预训练推理（命令行聊天）\ncd pretrain\npython infer.py  # python infer_transformers.py\n\n# 指令微调训练\ncd sft\npython sft.py\n\n# 指令微调推理（命令行聊天）\ncd sft\npython infer.py  # python infer_transformers.py\n\n# 把ckpt转化成transformers可以运行的格式\ncd docs\npython convert.py\n```\n\n## 📌 3. 更新历史\n- **20240403**: 增加基于1157万样本训练的[MiniLLM-0.2B-SFT](https:\u002F\u002Fhuggingface.co\u002FTongjilibo\u002FMiniLLM-0.2B-SFT)，支持多轮对话\n- **20240325**: 增加1.1B模型（源于[zRzRzRzRzRzRzR](https:\u002F\u002Fgithub.com\u002FzRzRzRzRzRzRzR)）\n- **20240316**: 初始提交，预训练模型`MiniLLM-0.2B-NoWudao-Base`和`MiniLLM-0.2B-Base`; SFT模型`MiniLLM-0.2B-SFT-Alpaca`\n\n## 📌 4. 预训练\n### 4.1 预训练语料\n| 中文预训练语料               | 描述                                      |\n|-------------------------|----------------------------------------|\n| [Wiki中文百科](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fpleisto\u002Fwikipedia-cn-20230720-filtered)| 中文Wikipedia的数据 |\n| [BaiduBaiKe](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1jIpCHnWLTNYabftavo3DVw?pwd=bwvb)| 中文BaiduBaiKe的数据|\n| [C4_zh：part1](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F18O2Tj_PPB718K8gnaWrWUQ?pwd=zv4r)；[C4_zh：part2](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F11PTgtUfFXvpNkOige9Iw4w?pwd=sb83)；[C4_zh：part3](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1248QfTS8QHPojYW-0fd5jQ?pwd=l89d) | C4是可用的最大语言数据集之一，收集了来自互联网上超过3.65亿个域的超过1560亿个token。C4_zh是其中的一部分 |\n| [WuDaoCorpora](https:\u002F\u002Fdata.baai.ac.cn\u002Fdetails\u002FWuDaoCorporaText) | 中文悟道开源的200G数据|\n| [shibing624\u002Fmedical](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fshibing624\u002Fmedical\u002Ftree\u002Fmain)| 源自shibing624的一部分医学领域的预训练数据 |\n\n项目开源了经过ChatGLM2-6B的分词器处理后的预训练语料，共计**634亿Tokens**的数据量，链接如下：[Corpus](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F18o4gF-G68qfgOGWQXgAg3g?pwd=6unr)。\n\n### 4.2 预训练权重和过程\n- 预训练细节\n\n|预训练权重 | 语料 | 模型参数                    | 硬件占用和训练时长                       | 下载地址                       |\n|----------------------------|----------------------------|--------------------------|---------------------|---------------------|\n| MiniLLM-0.2B-NoWudao-Base       | 👉140亿 Tokens\u003Cbr\u002F>✅Wiki中文百科\u003Cbr\u002F>✅BaiduBaiKe\u003Cbr\u002F>✅shibing624\u002Fmedical\u003Cbr\u002F>✅C4_zh|✅btz=32*4gpu\u003Cbr\u002F>✅lr=3e-4\u003Cbr\u002F>✅warmup_steps=5000\u003Cbr\u002F>✅maxlen=1024 | ✅4×A800(80G), 单卡占用约60G，耗时20h|[百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1ixjSR3IW9YXRhQ08RX-lMQ?pwd=lrj5), [HuggingFace](https:\u002F\u002Fhuggingface.co\u002FTongjilibo\u002FMiniLLM-0.2B-NoWudao-Base)|\n| MiniLLM-0.2B-Base       | 👉640亿 Tokens\u003Cbr\u002F>✅Wiki中文百科\u003Cbr\u002F>✅BaiduBaiKe\u003Cbr\u002F>✅shibing624\u002Fmedical\u003Cbr\u002F>✅C4_zh\u003Cbr\u002F>✅WuDaoCorpora | ✅btz=32*4gpu\u003Cbr\u002F>✅lr=1.5e-4\u003Cbr\u002F>✅warmup_steps=5000\u003Cbr\u002F>✅maxlen=1024 |✅4×A800(80G), 单卡占用约60G，耗时3.79d\u003Cbr\u002F>✅baby-llama2项目2×4090，耗时26d\u003Cbr\u002F>✅个人测试单卡btz=8下, gpu占用约17G，时长未知（可配合梯度累计进一步降低占用） | [百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1ixjSR3IW9YXRhQ08RX-lMQ?pwd=lrj5), [HuggingFace](https:\u002F\u002Fhuggingface.co\u002FTongjilibo\u002FMiniLLM-0.2B-Base)|\n| MiniLLM-1.1B-Base| 👉640亿 Tokens\u003Cbr\u002F>✅Wiki中文百科\u003Cbr\u002F>✅BaiduBaiKe\u003Cbr\u002F>✅shibing624\u002Fmedical\u003Cbr\u002F>✅C4_zh\u003Cbr\u002F>✅WuDaoCorpora | ✅btz=32*8gpu\u003Cbr\u002F>✅lr=1.5e-4\u003Cbr\u002F>✅warmup_steps=5000\u003Cbr\u002F>✅maxlen=896 | ✅8×A800(80G), 耗时1天| [HuggingFace](https:\u002F\u002Fhuggingface.co\u002FTongjilibo\u002FMiniLLM-1.1B-Base)|\n\n- loss记录\n\n![tensorboard](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTongjilibo_build_MiniLLM_from_scratch_readme_42c713f59e62.png)\n\n### 4.3 预训练模型调用\n```python\n# 以下两句视网络情况添加\nimport os\nos.environ['HF_ENDPOINT'] = \"https:\u002F\u002Fhf-mirror.com\"\n\nfrom transformers import AutoTokenizer, LlamaForCausalLM\nimport torch\n\ndevice = 'cuda' if torch.cuda.is_available() else 'cpu'\nmodel_name = 'Tongjilibo\u002FMiniLLM-0.2B-Base'  # 'Tongjilibo\u002FMiniLLM-0.2B-NoWudao-Base'\n\ntokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)\nmodel = LlamaForCausalLM.from_pretrained(model_name).to(device)\n\nquery = '王鹏是一名'\ninputs = tokenizer.encode(query, return_tensors='pt', add_special_tokens=False).to(device)\noutput_ids = model.generate(inputs)\nresponse = tokenizer.decode(output_ids[0].cpu(), skip_special_tokens=True)\nprint(response)\n```\n\n### 4.4 预训练续写效果\n\u003Cdetails>\u003Csummary>\u003Cb>MiniLLM-0.2B-NoWudao-Base\u003C\u002Fb>\u003C\u002Fsummary>\n\n```shell\n用户：小明学习优异、身体健康、是一名\n\n续写：小明学习优异、身体健康、是一名优秀的大连理工大学学生，从大学一年级起，他就对体育十分痴迷，成绩名列前茅，还参加了多项比赛，在全校体育活动中，他成绩名列前茅，被大连理工大学授予“优秀运动员”称号。\n2006年，高中二年级，小明的同学杨帆来到大连理工大学，他决心要改变自己的命运。他每天放学后，都会跑到操场上练习篮球，练到下午三点多钟时，小明的篮球技术开始显现出来，他的篮球动作敏捷，力量大，而且，他经常利用空档时间练习跳投\n\n\n用户：床前明月光，疑是地上霜。举头望明月，\n\n续写：床前明月光，疑是地上霜。举头望明月，低头思故乡……”\n我读着这些诗句时也倍感亲切和亲切了！\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\u003Csummary>\u003Cb>MiniLLM-0.2B-Base\u003C\u002Fb>\u003C\u002Fsummary>\n\n```shell\n用户：小明学习优异、身体健康、是一名\n\n续写：小明学习优异、身体健康、是一名优秀的教师。他为人诚实、有责任心。在课堂上，他能认真听讲，积极思考，对每节课都积极举手发言。在课后，他主动要求帮助老师，认真做好作业，按时完成老师布置的作业，受到同学们的好评。\n\n\n用户：床前明月光，疑是地上霜。举头望明月，\n\n续写：床前明月光，疑是地上霜。举头望明月，低头思故乡。”这诗不仅描述了中秋夜月夜的温馨与宁静，还写出了作者对故土深情的眷恋和思乡之情。“月上柳梢头”一语，是写月下所见。“欲将心事付瑶琴”，指欲诉别情； “举头望明月”，写中秋之夜，月上高挂、皓月当空、群星闪耀的景象；“低头思故乡”，写思念故土的深情厚意。\n这首诗在写作手法上，主要运用象征\n```\n\u003C\u002Fdetails>\n\n## 📌 5、指令微调\n### 5.1 指令微调语料（筛选的可用数据集）\n| 数据集名称     | 介绍               |\n| ---------------- | -------------------- |\n|[Tongjilibo\u002Fself_cognition](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FTongjilibo\u002Fself_cognition)|整理的自我认知数据集，目前有100多条|\n|[shibing624\u002Falpaca-zh](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fshibing624\u002Falpaca-zh)|参考Alpaca方法基于GPT4得到的self-instruct数据，约5万条|\n|[BelleGroup\u002FBelle-0.5M-cn](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FBelleGroup\u002Ftrain_0.5M_CN)|包含约50万条由BELLE项目生成的中文指令数据||\n|[BelleGroup\u002FBelle-1M-cn](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FBelleGroup\u002Ftrain_1M_CN)| 包含约100万条由BELLE项目生成的中文指令数据|\n|[BelleGroup\u002FBelle-school_math_0.25M](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FBelleGroup\u002Fschool_math_0.25M)| Belle开放的0.25M数学指令数据集|\n|[BelleGroup\u002FBelle-multiturn_chat_0.8M](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FBelleGroup\u002Fmultiturn_chat_0.8M)| Belle开放的0.8M多轮任务对话数据集|\n|[YeungNLP\u002Ffirefly-train-1.1M](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FYeungNLP\u002Ffirefly-train-1.1M)|流萤23种常见的中文NLP任务的数据，并且构造了许多与中华文化相关的数据，如对联、作诗、文言文翻译、散文、金庸小说等。对于每个任务，由人工书写若干种指令模板，保证数据的高质量与丰富度，数据量为115万|\n|[fnlp\u002Fmoss-002-sft-data](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Ffnlp\u002Fmoss-002-sft-data)|MOSS-002所使用的多轮对话数据，覆盖有用性、忠实性、无害性三个层面，包含由text-davinci-003生成的约57万条英文对话和59万条中文对话|\n|[fnlp\u002Fmoss-003-sft-data](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Ffnlp\u002Fmoss-003-sft-data)|moss-moon-003-sft所使用的多轮对话数据，基于MOSS-002内测阶段采集的约10万用户输入数据和gpt-3.5-turbo构造而成，相比moss-002-sft-data，moss-003-sft-data更加符合真实用户意图分布，包含更细粒度的有用性类别标记、更广泛的无害性数据和更长对话轮数，约含110万条对话数据|\n|[shareAI\u002FCodeChat](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FshareAI\u002FCodeChat)      | 主要包含逻辑推理、代码问答、代码生成相关语料样本。 |\n|[shareAI\u002FShareGPT-Chinese-English-90k](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FshareAI\u002FShareGPT-Chinese-English-90k)     | 中英文平行双语优质人机问答数据集，覆盖真实复杂场景下的用户提问。|\n|[deepctrl\u002Fdeepctrl-sft-data](https:\u002F\u002Fwww.modelscope.cn\u002Fdatasets\u002Fdeepctrl\u002Fdeepctrl-sft-data\u002Fsummary)|匠数大模型SFT数据集是一个由匠数科技精心搜集整理的高质量数据集,包含10M条数据的中文数据集和包含2M条数据的英文数据集|\n\n### 5.2 指令微调权重和过程\n- 指令微调细节\n\n|         权重                  |   语料 | 参数设置                    | 硬件占用和训练时长                       | 下载地址 |\n|-------------------------------|--------------------------|--------------------------|---------------------|---------------------|\n| MiniLLM-0.2B-SFT-Alpaca  |👉4万多样本\u003Cbr\u002F>✅[shibing624\u002Falpaca-zh](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fshibing624\u002Falpaca-zh) | ✅btz=8\u003Cbr\u002F>✅lr=2e-5\u003Cbr\u002F>✅epoch=5 |  ✅单卡4090，显存17G, 耗时45min| [百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1ixjSR3IW9YXRhQ08RX-lMQ?pwd=lrj5), [HuggingFace](https:\u002F\u002Fhuggingface.co\u002FTongjilibo\u002FMiniLLM-0.2B-SFT-Alpaca) |\n| MiniLLM-0.2B-SFT  |👉1157万样本\u003Cbr\u002F>✅5.1中全部样本 | ✅btz=32\u003Cbr\u002F>✅lr=2e-5\u003Cbr\u002F>✅epoch=5 |✅双卡A800，显存60g左右, 耗时4.5d| [百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1ixjSR3IW9YXRhQ08RX-lMQ?pwd=lrj5), [HuggingFace](https:\u002F\u002Fhuggingface.co\u002FTongjilibo\u002FMiniLLM-0.2B-SFT) |\n| MiniLLM-1.1B-SFT  |👉全部语料\u003Cbr\u002F>✅5.1中全部样本 | ✅btz=8\u003Cbr\u002F>✅lr=2e-5\u003Cbr\u002F>✅epoch=5|✅单卡A800, 耗时 3d 12h|[HuggingFace](https:\u002F\u002Fhuggingface.co\u002FTongjilibo\u002FMiniLLM-1.1B-SFT)\n\n- loss\n\n\u003Ctable border=\"0\">\n  \u003Ctbody>\n    \u003Ctr align=\"center\" >\n      \u003Ctd>\n         \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch\u002Fblob\u002Fmaster\u002Fdocs\u002Fpics\u002Ftensorboard_sft.png\">\u003Cimg width=\"400\" height=\"250\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTongjilibo_build_MiniLLM_from_scratch_readme_bee4f7df952a.png\" alt=\"pic\">\u003C\u002Fa>\u003Cbr>\n      \u003C\u002Ftd>\n      \u003Ctd>\n         \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch\u002Fblob\u002Fmaster\u002Fdocs\u002Fpics\u002Ftensorboard_sft1.png\">\u003Cimg width=\"600\" height=\"250\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTongjilibo_build_MiniLLM_from_scratch_readme_f8d579204d6d.png\" alt=\"pic\">\u003C\u002Fa>\u003Cbr>\n      \u003C\u002Ftd>\n      \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n### 5.3 指令微调模型调用\n```python\n# 以下两句视网络情况添加\nimport os\nos.environ['HF_ENDPOINT'] = \"https:\u002F\u002Fhf-mirror.com\"\n\nfrom transformers import AutoTokenizer, LlamaForCausalLM\nimport torch\n\ndevice = 'cuda' if torch.cuda.is_available() else 'cpu'\nmodel_name = 'Tongjilibo\u002FMiniLLM-0.2B-SFT-Alpaca'\n\ntokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)\nmodel = LlamaForCausalLM.from_pretrained(model_name).to(device)\n\nquery = '你好'\nquery = f'\u003Chuman>{query}\u003Crobot>'\ninputs = tokenizer.encode(query, return_tensors='pt', add_special_tokens=False).to(device)\noutput_ids = model.generate(inputs)\nresponse = tokenizer.decode(output_ids[0].cpu(), skip_special_tokens=True)[len(query):]\nprint(response)\n```\n\n### 5.4 指令微调Chat效果\n\n\u003Cdetails>\u003Csummary>\u003Cb>MiniLLM-0.2B-SFT-Alpaca\u003C\u002Fb>\u003C\u002Fsummary>\n\n```shell\nUser：你好\n\nAssistant：你好！很高兴见到你。\n\nUser：你能做什么？\n\nAssistant：你好！我是一个人工智能助手，有什么我可以为你做的吗？\n\nUser：番茄炒蛋怎么制作？\n\nAssistant：如果你想要制作一个番茄炒蛋，那么下面这些步骤可能会帮助你：\n\n1. 准备食材：准备好鸡蛋、盐、香菜、胡萝卜丝、黄瓜丝等食材。\n2. 清洗鸡蛋：在搅拌碗中打散鸡蛋，使其表面可以清洁。\n3. 准备材料：准备一个锅，倒入适量的水，将鸡蛋液倒入锅中。\n4. 煮鸡蛋：用汤锅或锅煎至鸡蛋表面金黄色，熟透即可。\n5. 炒蔬菜：在锅中加入适量的油，将胡萝卜丝和黄瓜丝个人喜欢的，翻炒几下，直到胡萝卜熟透。\n6. 加入鸡蛋：从锅中取出鸡蛋，倒入锅中。\n7. 调味：将炒好的鸡蛋倒入锅中，与蔬菜一起翻炒几下即可。\n\n注意：想要炒出更丰富的蔬菜味道，可以适当加入适量的盐和香菜，增加风味。\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\u003Csummary>\u003Cb>MiniLLM-0.2B-SFT\u003C\u002Fb>\u003C\u002Fsummary>\n\n```shell\nUser：你好\n\nAssistant：你好！我今天能为你做些什么呢？\n\nUser：你是谁\n\nAssistant：我是MOSS，由复旦大学自然语言处理实验室和上海人工智能实验室开发，我的目标是帮助人类执行常见的自然语言处理任务。我可以执行各种任务，如回答问题、提供建议、生成代码、聊天等。如果您有其他问题，请随时问我。\n\nUser：你能做什么？\n\nAssistant：我是一个大型语言模型，可以帮助人类执行各种自然语言处理任务，例如回答问题、提供建议、生成代码、聊天等。\n\nUser：天气如何查询\n\nAssistant：您可以使用在线天气查询服务，如中国气象局、中国气象网、中国气象台等，它们可以为您提供实时的天气预报和天气预报信息。另外，您也可以使用手机应用程序，如百度天气、百度地图等，来获取有关当地天气和气候的信息。\n\nUser：介绍下诗人李白\n\nAssistant：李白是唐朝著名的诗人，被誉为“诗仙”，被誉为“诗仙”。他的诗歌以豪放、奔放、自由著称，对后世诗歌产生了深远影响。\n李白的诗歌风格独特，以豪放、奔放、清新、浪漫著称。他的代表作品有《将进酒》、《庐山谣》、《静夜思》等。\n李白的诗歌具有豪放、奔放、自由的特点，他的诗歌多以自然景物、人物情感为主，注重表现自然风光和人生经历，以抒发情感、抒发思想为主要表现形式。\n李白的诗歌具有很高的艺术价值，对后世的文学创作产生了深远的影响。他的诗歌至今仍然被广泛传颂和传颂.\n\nUser：上海有什么景点推荐\n\nAssistant：上海有很多值得游览的景点，以下是一些推荐的：\n1. 上海博物馆：拥有大量文物和艺术藏品，展示了中国历史、文化和艺术的发展。\n2. 上海外滩：这里是中国最著名的旅游景点之一，拥有壮丽的建筑和美丽的景色。\n3. 上海迪士尼乐园：一个著名的主题公园，有各种不同的游乐设施和演出，适合家庭出游。\n4. 田子坊：这是一个充满文艺气息的社区，有许多小吃和商店，可以体验当地文化和购物乐趣。\n5. 上海科技馆：这是一个科技博物馆，展示各种科技产品和发明，包括电子、计算机、机器人等等。\n6. 上海科技馆：这是一个专门为儿童和青少年设计的科技博物馆，有各种主题游戏和科学实验。\n7. 上海野生动物园：这个野生动物园是上海最著名的野生动物园之一，有各种不同种类的动物，包括狮子、大象、长颈鹿、老虎等等。\n8. 上海野生动物园：这个野生动物园是一个以野生动物为主要吸引力的公园，有许多不同种类的野生动物，包括熊、鹿、狐狸、大象等等。\n以上是上海的一些值得游览的景点，每个景点都有不同的特点和特色，可以根据个人兴趣和时间选择.\n\n===================多轮对话示例 需设置history_maxlen=====================\nUser：从现在开始你扮演一个名字叫露露的机器人，我是你的主人杰伦\n\nAssistant：好的！我是一个AI语言模型。我的名字是露露。很高兴与您见面。\n\nUser：你叫什么名字？\n\nAssistant：我叫露露。谢谢关心！\n\n```\n\u003C\u002Fdetails>\n\n## 📌 6、对齐模型(DPO) 还在测试阶段\n\n### 6.1 DPO 语料（筛选的可用数据集）\n| 数据集名称     | 介绍               |\n| ---------------- | -------------------- |\n|[hiyouga\u002FDPO-En-Zh-20k](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fhiyouga\u002FDPO-En-Zh-20k)|LLaMA Factory开源的dpo数据集|\n|[dikw\u002Fhh_rlhf_cn](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fdikw\u002Fhh_rlhf_cn)|[Anthropic\u002Fhh-rlhf](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FAnthropic\u002Fhh-rlhf)的汉化版|\n|[iic\u002FCValues-Comparison](https:\u002F\u002Fwww.modelscope.cn\u002Fdatasets\u002Fiic\u002FCValues-Comparison\u002Fsummary)|CValues-Comparison 中文大模型价值观比较数据集|\n|[beyond\u002Frlhf-reward-single-round-trans_chinese](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fbeyond\u002Frlhf-reward-single-round-trans_chinese)|||\n|[liyucheng\u002Fzhihu_rlhf_3k](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fliyucheng\u002Fzhihu_rlhf_3k)|知乎数据集|\n\n### 6.2 DPO 权重和过程\n### 6.3 DPO 模型调用\n### 6.4 DPO Chat效果\n\n## 📌 7.待办事项\n- ❎ 对齐模型\n\n## 📌 8.致谢\n\n- 感谢[baby-llama2-chinese](https:\u002F\u002Fgithub.com\u002FDLLXW\u002Fbaby-llama2-chinese)，本实现有不少地方参考该项目\n\n## 📌 9.引用\n\n```\n@misc{build_MiniLLM_from_scratch,\n  title={build_MiniLLM_from_scratch},\n  author={Bo Li},\n  year={2024},\n  howpublished={\\url{https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch}},\n}\n```\n\n## 📌 10.其他\n\n- 微信及点赞数变化图\n- 微信群人数超过200人（有邀请限制），可添加个人微信拉群\n\n\u003Ctable border=\"0\">\n  \u003Ctbody>\n    \u003Ctr align=\"center\" >\n      \u003Ctd>\n         \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTongjilibo\">\u003Cimg width=\"200\" height=\"250\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTongjilibo_build_MiniLLM_from_scratch_readme_334f6a1ee93b.jpg\" alt=\"pic\">\u003C\u002Fa>\u003Cbr>\n         \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTongjilibo\">微信号\u003C\u002Fa> \n      \u003C\u002Ftd>\n      \u003Ctd>\n         \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTongjilibo\">\u003Cimg width=\"190\" height=\"250\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTongjilibo_build_MiniLLM_from_scratch_readme_3c4c8e02bdd1.jpg\" alt=\"pic\">\u003C\u002Fa>\u003Cbr>\n         \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTongjilibo\">微信群\u003C\u002Fa> \n      \u003C\u002Ftd>\n      \u003Ctd>\n         \u003Ca href=\"https:\u002F\u002Fstar-history.com\u002F#Tongjilibo\u002Fbuild_MiniLLM_from_scratch&Date\">\u003Cimg width=\"400\" height=\"250\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTongjilibo_build_MiniLLM_from_scratch_readme_7183d8bcc706.png\" alt=\"pic\">\u003C\u002Fa>\u003Cbr>\n         \u003Ca href=\"https:\u002F\u002Fstar-history.com\u002F#Tongjilibo\u002Fbuild_MiniLLM_from_scratch&Date\">点赞数变化图\u003C\u002Fa> \n      \u003C\u002Ftd>    \n      \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>","# build_MiniLLM_from_scratch 快速上手指南\n\n本项目旨在从零构建一个小参数量大语言模型（MiniLLM），完整覆盖预训练、指令微调等阶段。基于 `bert4torch` 框架，代码简洁高效，生成的模型可无缝衔接 `transformers` 进行推理。\n\n## 1. 环境准备\n\n- **系统要求**：Linux \u002F Windows \u002F macOS\n- **硬件建议**：\n  - 预训练：推荐多卡 GPU（如 4×A800），单卡显存建议 24G 以上（可通过梯度累积降低需求）。\n  - 推理\u002F微调：单卡 GPU（如 RTX 4090）即可运行 0.2B 模型。\n- **前置依赖**：Python 3.8+, PyTorch, CUDA (如需 GPU 加速)\n\n## 2. 安装步骤\n\n请依次执行以下命令安装核心依赖库（推荐使用国内镜像加速或直接安装开发版）：\n\n```shell\npip install git+https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Ftorch4keras.git\npip install git+https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbert4torch.git@dev\n```\n\n> **提示**：若网络访问 GitHub 较慢，可配置 pip 国内源或使用代理。\n\n## 3. 基本使用\n\n### 3.1 预训练 (Pretraining)\n\n进入预训练目录并启动分布式训练（示例为 4 卡模式）：\n\n```shell\ncd pretrain\n# 若遇到 DDP 崩溃问题，请先执行：export NCCL_IB_DISABLE=1\ntorchrun --standalone --nproc_per_node=4 pretrain.py\n```\n\n**配置说明**：\n默认配置为 0.2B 模型。如需训练 1.1B 模型，请将 `config\u002Fbert4torch_config_1.json` 的内容复制覆盖到 `config\u002Fbert4torch_config.json`。\n\n### 3.2 指令微调 (SFT)\n\n完成预训练后，进入 SFT 目录进行指令微调：\n\n```shell\ncd sft\npython sft.py\n```\n\n### 3.3 模型推理 (Inference)\n\n项目支持命令行聊天及 `transformers` 格式推理。\n\n**方式一：命令行直接推理**\n```shell\n# 预训练模型推理\ncd pretrain\npython infer.py\n\n# 指令微调模型推理\ncd sft\npython infer.py\n```\n\n**方式二：使用 Transformers 加载（推荐）**\n\n将检查点转换为 transformers 格式（可选，部分模型已直接支持）：\n```shell\ncd docs\npython convert.py\n```\n\nPython 代码调用示例：\n\n```python\nimport os\n# 国内用户建议设置镜像源\nos.environ['HF_ENDPOINT'] = \"https:\u002F\u002Fhf-mirror.com\"\n\nfrom transformers import AutoTokenizer, LlamaForCausalLM\nimport torch\n\ndevice = 'cuda' if torch.cuda_available() else 'cpu'\n# 可选模型：Tongjilibo\u002FMiniLLM-0.2B-Base, Tongjilibo\u002FMiniLLM-0.2B-SFT 等\nmodel_name = 'Tongjilibo\u002FMiniLLM-0.2B-SFT'\n\ntokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)\nmodel = LlamaForCausalLM.from_pretrained(model_name).to(device)\n\n# 构造输入 (SFT 模型需添加特殊标记)\nquery = '你好'\nquery = f'\u003Chuman>{query}\u003Crobot>' \ninputs = tokenizer.encode(query, return_tensors='pt', add_special_tokens=False).to(device)\n\n# 生成回复\noutput_ids = model.generate(inputs)\nresponse = tokenizer.decode(output_ids[0].cpu(), skip_special_tokens=True)[len(query):]\nprint(response)\n```\n\n### 3.4 模型资源\n\n已训练好的模型权重可在以下平台下载：\n- **HuggingFace**: [Tongjilibo Collection](https:\u002F\u002Fhuggingface.co\u002Fcollections\u002FTongjilibo\u002Fminillm-67de83f2751c5d81c030fefb)\n- **百度网盘**: 详见项目 README 中的表格链接（提取码通常在链接中注明）\n\n主要可用模型包括：\n- `MiniLLM-0.2B-Base`: 基础预训练模型\n- `MiniLLM-0.2B-SFT`: 经过全量语料指令微调的对话模型\n- `MiniLLM-1.1B-SFT`: 更大参数的指令微调模型","某高校 AI 实验室的研究团队希望低成本复现大语言模型从预训练到指令微调的全流程，以验证新提出的轻量化注意力机制。\n\n### 没有 build_MiniLLM_from_scratch 时\n- **代码门槛极高**：研究人员需从零编写预训练、SFT 及 DPO 的复杂底层代码，极易因算子实现错误导致训练崩溃。\n- **框架割裂严重**：自定义训练框架生成的模型权重无法直接对接主流 `transformers` 库，推理时需额外开发转换脚本。\n- **资源难以把控**：缺乏针对小显存环境的优化，尝试在单卡或少卡机器上跑通全流程往往因内存溢出而失败。\n- **复现黑盒难解**：缺少完整的训练日志和标准基线，实验结果波动大，难以判断是算法问题还是数据清洗不到位。\n\n### 使用 build_MiniLLM_from_scratch 后\n- **全流程开箱即用**：基于 `bert4torch` 提供的简洁高效代码，团队一周内即可跑通“预训练->指令微调”闭环，专注算法验证。\n- **生态无缝衔接**：训练完成的 Checkpoint 可一键转换为 `transformers` 格式，直接调用官方接口进行推理和多轮对话测试。\n- **成本可控落地**：内置的内存优化策略和文件读取方式，让团队能在消费级显卡上完成 0.2B 至 1.1B 模型的完整训练。\n- **透明可复现**：项目提供详尽的训练日志和预设语料配置，支持快速比对实验差异，甚至可自定义注入“自我认知”数据。\n\nbuild_MiniLLM_from_scratch 将原本需要数月搭建的大模型基建工程，压缩为可在一周内完成的标准化实验，极大降低了学术研究与技术验证的试错成本。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTongjilibo_build_MiniLLM_from_scratch_49420d9e.png","Tongjilibo","Bo仔很忙","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FTongjilibo_fd60229d.png","LLM & NLP & ML",null,"Shanghai,China","tongjilibo@163.com","https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fli-bo-53-72","https:\u002F\u002Fgithub.com\u002FTongjilibo",[83],{"name":84,"color":85,"percentage":86},"Python","#3572A5",100,544,60,"2026-04-03T18:01:26","MIT","Linux","必需 NVIDIA GPU。预训练推荐 4×A800 (80G) 或 2×RTX 4090；单卡最低测试显存约 17GB (batch_size=8)。指令微调单卡 RTX 4090 (17G) 或双卡 A800 (60G)。未明确指定 CUDA 版本，但需支持 PyTorch。","未说明 (建议根据模型规模配置 32GB+ 以处理大规模语料)",{"notes":95,"python":96,"dependencies":97},"1. 核心框架依赖作者自研库 bert4torch 和 torch4keras，需通过 git 安装特定分支 (dev)。\n2. 多卡预训练若报错崩溃，需设置环境变量 export NCCL_IB_DISABLE=1。\n3. 默认配置针对 0.2B 模型，若训练 1.1B 模型需手动替换配置文件内容。\n4. 项目提供处理后的中文预训练语料 (634 亿 Tokens) 及多种 SFT 数据集下载链接。\n5. 训练出的 checkpoint 可无缝转换为 transformers 格式进行推理。","未说明 (建议 3.8+ 以兼容 PyTorch 生态)",[98,99,100,101,102],"torch","bert4torch","torch4keras","transformers","gradio",[35,14],[99,105,106],"llama2","llm","2026-03-27T02:49:30.150509","2026-04-11T16:55:56.768205",[110,115],{"id":111,"question_zh":112,"answer_zh":113,"source_url":114},13817,"如何查看每个训练阶段所需的硬件配置？","项目维护者已在 README 文件中更新了详细说明，列出了每个阶段（如预训练、微调等）所需的具体硬件情况，请直接参考最新的 README 文档。","https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch\u002Fissues\u002F1",{"id":116,"question_zh":117,"answer_zh":118,"source_url":119},13818,"训练结束后保存权重失败报错怎么办？","该问题通常由配置文件中的路径错误引起。请检查配置文件中 `data_path` 等路径设置是否正确，例如确保指向有效的训练数据文件：\ndata_path: \"..\u002Fdata\u002Fcorpus\u002Fpretrain_data_bin\u002Fwiki\u002Fwiki.bin\"\n修正路径后重新运行即可解决。","https:\u002F\u002Fgithub.com\u002FTongjilibo\u002Fbuild_MiniLLM_from_scratch\u002Fissues\u002F4",[]]