[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-minimaxir--aitextgen":3,"tool-minimaxir--aitextgen":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},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,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},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 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":80,"owner_email":81,"owner_twitter":82,"owner_website":83,"owner_url":84,"languages":85,"stars":98,"forks":99,"last_commit_at":100,"license":101,"difficulty_score":23,"env_os":102,"env_gpu":103,"env_ram":104,"env_deps":105,"category_tags":112,"github_topics":82,"view_count":23,"oss_zip_url":82,"oss_zip_packed_at":82,"status":16,"created_at":113,"updated_at":114,"faqs":115,"releases":146},2855,"minimaxir\u002Faitextgen","aitextgen","A robust Python tool for text-based AI training and generation using GPT-2.","aitextgen 是一款基于 Python 的开源工具，旨在让用户轻松利用 GPT-2 或 GPT Neo 架构进行文本 AI 的训练与生成。作为 textgenrnn 和 gpt-2-simple 的继任者，它解决了以往工具在训练速度、内存效率以及多显卡支持上的局限，让构建专属文本模型变得更加高效便捷。\n\n这款工具非常适合开发者、数据科学家以及对自然语言处理感兴趣的研究人员使用。无论是希望快速微调预训练模型，还是想要从零开始训练自定义 tokenizer 和模型，aitextgen 都能提供灵活的支持。其独特亮点在于深度整合了 PyTorch、Hugging Face Transformers 和 pytorch-lightning 生态：不仅支持单卡、多卡乃至未来的 TPU 训练，还允许用户合并多个数据集进行交叉训练，从而创造出风格融合的生成效果。此外，它提供了丰富的生成控制参数，并兼容 Hugging Face 模型库，方便模型的下载、上传及复用。即使没有高端 GPU 环境，用户也能通过简单的代码或命令行快速上手体验，是探索文本生成技术的理想起点。","# aitextgen\n\nA robust Python tool for text-based AI training and generation using [OpenAI's](https:\u002F\u002Fopenai.com) [GPT-2](https:\u002F\u002Fopenai.com\u002Fblog\u002Fbetter-language-models\u002F) and [EleutherAI's](https:\u002F\u002Fwww.eleuther.ai) [GPT Neo\u002FGPT-3](https:\u002F\u002Fgithub.com\u002FEleutherAI\u002Fgpt-neo) architecture.\n\naitextgen is a Python package that leverages [PyTorch](https:\u002F\u002Fpytorch.org), [Hugging Face Transformers](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftransformers) and [pytorch-lightning](https:\u002F\u002Fgithub.com\u002FPyTorchLightning\u002Fpytorch-lightning) with specific optimizations for text generation using GPT-2, plus _many_ added features. It is the successor to [textgenrnn](https:\u002F\u002Fgithub.com\u002Fminimaxir\u002Ftextgenrnn) and [gpt-2-simple](https:\u002F\u002Fgithub.com\u002Fminimaxir\u002Fgpt-2-simple), taking the best of both packages:\n\n- Finetunes on a pretrained 124M\u002F355M\u002F774M GPT-2 model from OpenAI or a 125M\u002F350M GPT Neo model from EleutherAI...or create your own GPT-2\u002FGPT Neo model + tokenizer and train from scratch!\n- Generates text faster than gpt-2-simple and with better memory efficiency!\n- With Transformers, aitextgen preserves compatibility with the base package, allowing you to use the model for other NLP tasks, download custom GPT-2 models from the HuggingFace model repository, and upload your own models! Also, it uses the included `generate()` function to allow a massive amount of control over the generated text.\n- With pytorch-lightning, aitextgen trains models not just on CPUs and GPUs, but also _multiple_ GPUs and (eventually) TPUs! It also includes a pretty training progress bar, with the ability to add optional loggers.\n- The input dataset is its own object, allowing you to not only easily encode megabytes of data in seconds, cache, and compress it on a local computer before transporting to a remote server, but you are able to _merge_ datasets without biasing the resulting dataset, or _cross-train_ on multiple datasets to create blended output.\n\nYou can read more about aitextgen [in the documentation](https:\u002F\u002Faitextgen.minimaxir.com\u002F)!\n\n## Demo\n\nYou can play with aitextgen _for free_ with powerful GPUs using these Colaboratory Notebooks!\n\n- [Finetune OpenAI's 124M GPT-2 model (or GPT Neo) on your own dataset (GPU)](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F15qBZx5y9rdaQSyWpsreMDnTiZ5IlN0zD?usp=sharing)\n- [Train a GPT-2 model + tokenizer from scratch (GPU)](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F144MdX5aLqrQ3-YW-po81CQMrD6kpgpYh?usp=sharing)\n\nYou can also play with custom [Reddit](notebooks\u002Freddit_demo.ipynb) and [Hacker News](notebooks\u002Fhacker_news_demo.ipynb) demo models on your own PC.\n\n## Installation\n\naitextgen can be installed [from PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Faitextgen\u002F):\n\n```sh\npip3 install aitextgen\n```\n\n## Quick Examples\n\nHere's how you can quickly test out aitextgen on your own computer, even if you don't have a GPU!\n\nFor generating text from a pretrained GPT-2 model:\n\n```py3\nfrom aitextgen import aitextgen\n\n# Without any parameters, aitextgen() will download, cache, and load the 124M GPT-2 \"small\" model\nai = aitextgen()\n\nai.generate()\nai.generate(n=3, max_length=100)\nai.generate(n=3, prompt=\"I believe in unicorns because\", max_length=100)\nai.generate_to_file(n=10, prompt=\"I believe in unicorns because\", max_length=100, temperature=1.2)\n```\n\nYou can also generate from the command line:\n\n```sh\naitextgen generate\naitextgen generate --prompt \"I believe in unicorns because\" --to_file False\n```\n\nWant to train your own mini GPT-2 model on your own computer? You can follow along [in this Jupyter Notebook](\u002Fnotebooks\u002Ftraining_hello_world.ipynb) or, download this [text file of Shakespeare's plays](https:\u002F\u002Fraw.githubusercontent.com\u002Fkarpathy\u002Fchar-rnn\u002Fmaster\u002Fdata\u002Ftinyshakespeare\u002Finput.txt), cd to that directory in a Terminal, open up a `python3` console and go:\n\n```py3\nfrom aitextgen.TokenDataset import TokenDataset\nfrom aitextgen.tokenizers import train_tokenizer\nfrom aitextgen.utils import GPT2ConfigCPU\nfrom aitextgen import aitextgen\n\n# The name of the downloaded Shakespeare text for training\nfile_name = \"input.txt\"\n\n# Train a custom BPE Tokenizer on the downloaded text\n# This will save one file: `aitextgen.tokenizer.json`, which contains the\n# information needed to rebuild the tokenizer.\ntrain_tokenizer(file_name)\ntokenizer_file = \"aitextgen.tokenizer.json\"\n\n# GPT2ConfigCPU is a mini variant of GPT-2 optimized for CPU-training\n# e.g. the # of input tokens here is 64 vs. 1024 for base GPT-2.\nconfig = GPT2ConfigCPU()\n\n# Instantiate aitextgen using the created tokenizer and config\nai = aitextgen(tokenizer_file=tokenizer_file, config=config)\n\n# You can build datasets for training by creating TokenDatasets,\n# which automatically processes the dataset with the appropriate size.\ndata = TokenDataset(file_name, tokenizer_file=tokenizer_file, block_size=64)\n\n# Train the model! It will save pytorch_model.bin periodically and after completion to the `trained_model` folder.\n# On a 2020 8-core iMac, this took ~25 minutes to run.\nai.train(data, batch_size=8, num_steps=50000, generate_every=5000, save_every=5000)\n\n# Generate text from it!\nai.generate(10, prompt=\"ROMEO:\")\n\n# With your trained model, you can reload the model at any time by\n# providing the folder containing the pytorch_model.bin model weights + the config, and providing the tokenizer.\nai2 = aitextgen(model_folder=\"trained_model\",\n                tokenizer_file=\"aitextgen.tokenizer.json\")\n\nai2.generate(10, prompt=\"ROMEO:\")\n```\n\nWant to run aitextgen and finetune GPT-2? Use the Colab notebooks in the Demos section, or [follow the documentation](https:\u002F\u002Faitextgen.minimaxir.com\u002F) to get more information and learn some helpful tips!\n\n## Known Issues\n\n- TPUs cannot be used to train a model: although you _can_ train an aitextgen model on TPUs by setting `n_tpu_cores=8` in an appropriate runtime, and the training loss indeed does decrease, there are a number of miscellaneous blocking problems. [[Tracking GitHub Issue](https:\u002F\u002Fgithub.com\u002Fminimaxir\u002Faitextgen\u002Fissues\u002F3)]\n\n## Upcoming Features\n\nThe current release (v0.5.X) of aitextgen **is considered to be a beta**, targeting the most common use cases. The Notebooks and examples written so far are tested to work, but more fleshing out of the docs\u002Fuse cases will be done over the next few months in addition to fixing the known issues noted above.\n\nThe next versions of aitextgen (and one of the reasons I made this package in the first place) will have native support for _schema-based generation_. (See [this repo](https:\u002F\u002Fgithub.com\u002Fminimaxir\u002Fgpt-2-keyword-generation) for a rough proof-of-concept.)\n\nAdditionally, I plan to develop an aitextgen [SaaS](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_as_a_service) to allow anyone to run aitextgen in the cloud and build APIs\u002FTwitter+Slack+Discord bots with just a few clicks. (The primary constraint is compute cost; if any venture capitalists are interested in funding the development of such a service, let me know.)\n\nI've listed more tentative features in the [UPCOMING](UPCOMING.md) document.\n\n## Ethics\n\naitextgen is a tool primarily intended to help facilitate creative content. It is not a tool intended to deceive. Although parody accounts are an obvious use case for this package, make sure you are _as upfront as possible_ with the methodology of the text you create. This includes:\n\n- State that the text was generated using aitextgen and\u002For a GPT-2 model architecture. (A link to this repo would be a bonus!)\n- If parodying a person, explicitly state that it is a parody, and reference who it is parodying.\n- If the generated text is human-curated, or if it's unsupervised random output.\n- Indicating who is maintaining\u002Fcurating the AI-generated text.\n- Make a good-faith effort to remove overfit output from the generated text that matches the input text verbatim.\n\nIt's fun to anthropomorphise the nameless \"AI\" as an abstract genius, but part of the reason I made aitextgen (and all my previous text-generation projects) is to make the technology more accessible and accurately demonstrate both its promise, and its limitations. **Any AI text generation projects that are deliberately deceptive may be disavowed.**\n\n## Maintainer\u002FCreator\n\nMax Woolf ([@minimaxir](https:\u002F\u002Fminimaxir.com))\n\n_Max's open-source projects are supported by his [Patreon](https:\u002F\u002Fwww.patreon.com\u002Fminimaxir) and [GitHub Sponsors](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fminimaxir). If you found this project helpful, any monetary contributions to the Patreon are appreciated and will be put to good creative use._\n\n## License\n\nMIT\n","# aitextgen\n\n一款功能强大的 Python 工具，用于基于文本的 AI 训练和生成，采用 [OpenAI](https:\u002F\u002Fopenai.com) 的 [GPT-2](https:\u002F\u002Fopenai.com\u002Fblog\u002Fbetter-language-models\u002F) 以及 [EleutherAI](https:\u002F\u002Fwww.eleuther.ai) 的 [GPT Neo\u002FGPT-3](https:\u002F\u002Fgithub.com\u002FEleutherAI\u002Fgpt-neo) 架构。\n\naitextgen 是一个 Python 包，它利用了 [PyTorch](https:\u002F\u002Fpytorch.org)、[Hugging Face Transformers](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftransformers) 和 [pytorch-lightning](https:\u002F\u002Fgithub.com\u002FPyTorchLightning\u002Fpytorch-lightning)，并针对使用 GPT-2 进行文本生成进行了特定优化，同时添加了 _许多_ 新特性。它是 [textgenrnn](https:\u002F\u002Fgithub.com\u002Fminimaxir\u002Ftextgenrnn) 和 [gpt-2-simple](https:\u002F\u002Fgithub.com\u002Fminimaxir\u002Fgpt-2-simple) 的继任者，融合了两者的优点：\n\n- 可以在 OpenAI 提供的预训练 124M\u002F355M\u002F774M GPT-2 模型，或 EleutherAI 提供的 125M\u002F350M GPT Neo 模型上进行微调……也可以自己创建 GPT-2\u002FGPT Neo 模型及分词器，并从头开始训练！\n- 文本生成速度比 gpt-2-simple 更快，且内存效率更高！\n- 借助 Transformers，aitextgen 保持与基础包的兼容性，允许你将模型用于其他自然语言处理任务，从 Hugging Face 模型库下载自定义 GPT-2 模型，并上传自己的模型！此外，它还使用内置的 `generate()` 函数，让你对生成的文本拥有极大的控制权。\n- 通过 pytorch-lightning，aitextgen 不仅可以在 CPU 和 GPU 上训练模型，还可以在 _多块_ GPU 甚至（未来）TPU 上进行训练！它还提供了一个美观的训练进度条，并支持添加可选的日志记录器。\n- 输入数据集是一个独立的对象，不仅可以在几秒钟内轻松编码数兆字节的数据，还能在本地缓存和压缩后传输到远程服务器；此外，你还可以在不引入偏差的情况下 _合并_ 数据集，或者在多个数据集上进行 _交叉训练_，从而生成混合输出。\n\n你可以在 [文档](https:\u002F\u002Faitextgen.minimaxir.com\u002F) 中了解更多关于 aitextgen 的信息！\n\n## 演示\n\n你可以使用这些 Colaboratory 笔记本来免费试用 aitextgen，并借助强大的 GPU 进行体验！\n\n- [在你的数据集上微调 OpenAI 的 124M GPT-2 模型（或 GPT Neo）（GPU）](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F15qBZx5y9rdaQSyWpsreMDnTiZ5IlN0zD?usp=sharing)\n- [从零开始训练 GPT-2 模型及分词器（GPU）](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F144MdX5aLqrQ3-YW-po81CQMrD6kpgpYh?usp=sharing)\n\n你也可以在自己的电脑上试用自定义的 [Reddit](notebooks\u002Freddit_demo.ipynb) 和 [Hacker News](notebooks\u002Fhacker_news_demo.ipynb) 演示模型。\n\n## 安装\n\naitextgen 可以从 [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Faitextgen\u002F) 安装：\n\n```sh\npip3 install aitextgen\n```\n\n## 快速示例\n\n即使你没有 GPU，也可以在自己的电脑上快速试用 aitextgen！\n\n以下是使用预训练 GPT-2 模型生成文本的方法：\n\n```py3\nfrom aitextgen import aitextgen\n\n# 如果不传入任何参数，aitextgen() 会自动下载、缓存并加载 124M 的 GPT-2 “small” 模型\nai = aitextgen()\n\nai.generate()\nai.generate(n=3, max_length=100)\nai.generate(n=3, prompt=\"我相信独角兽是因为\", max_length=100)\nai.generate_to_file(n=10, prompt=\"我相信独角兽是因为\", max_length=100，temperature=1.2)\n```\n\n你也可以通过命令行生成文本：\n\n```sh\naitextgen generate\naitextgen generate --prompt \"我相信独角兽是因为\" --to_file False\n```\n\n想在自己的电脑上训练一个小型 GPT-2 模型吗？可以按照 [这个 Jupyter Notebook](\u002Fnotebooks\u002Ftraining_hello_world.ipynb) 的步骤操作，或者下载这份 [莎士比亚戏剧的文本文件](https:\u002F\u002Fraw.githubusercontent.com\u002Fkarpathy\u002Fchar-rnn\u002Fmaster\u002Fdata\u002Ftinyshakespeare\u002Finput.txt)，在终端中切换到该目录，打开 `python3` 控制台，然后执行以下操作：\n\n```py3\nfrom aitextgen.TokenDataset import TokenDataset\nfrom aitextgen.tokenizers import train_tokenizer\nfrom aitextgen.utils import GPT2ConfigCPU\nfrom aitextgen import aitextgen\n\n# 下载的莎士比亚文本文件名\nfile_name = \"input.txt\"\n\n# 使用下载的文本训练自定义 BPE 分词器\n# 这将保存一个文件：`aitextgen.tokenizer.json`，其中包含重建分词器所需的信息。\ntrain_tokenizer(file_name)\ntokenizer_file = \"aitextgen.tokenizer.json\"\n\n# GPT2ConfigCPU 是一种专为 CPU 训练优化的 GPT-2 精简版本\n# 例如，这里的输入标记数是 64，而标准 GPT-2 是 1024。\nconfig = GPT2ConfigCPU()\n\n# 使用创建的分词器和配置实例化 aitextgen\nai = aitextgen(tokenizer_file=tokenizer_file, config=config)\n\n# 可以通过创建 TokenDataset 来构建训练数据集，\n# 它会自动以合适的大小处理数据集。\ndata = TokenDataset(file_name, tokenizer_file=tokenizer_file，block_size=64)\n\n# 开始训练模型！它会定期保存 pytorch_model.bin 文件，并在训练完成后将其保存到 `trained_model` 文件夹中。\n# 在一台 2020 年款的 8 核 iMac 上，整个过程大约耗时 25 分钟。\nai.train(data, batch_size=8, num_steps=50000, generate_every=5000, save_every=5000)\n\n# 用它生成文本！\nai.generate(10, prompt=\"罗密欧：\"）\n\n# 使用你训练好的模型，你可以随时通过提供包含 pytorch_model.bin 模型权重的文件夹和配置文件，以及分词器，重新加载模型。\nai2 = aitextgen(model_folder=\"trained_model\",\n                tokenizer_file=\"aitextgen.tokenizer.json\")\n\nai2.generate(10, prompt=\"罗密欧：\"）\n```\n\n如果你想运行 aitextgen 并对 GPT-2 进行微调，请使用“演示”部分中的 Colab 笔记本，或者参考 [文档](https:\u002F\u002Faitextgen.minimaxir.com\u002F) 获取更多信息和实用技巧！\n\n## 已知问题\n\n- 目前无法使用 TPU 训练模型：尽管你可以在适当的运行环境中设置 `n_tpu_cores=8` 来尝试在 TPU 上训练 aitextgen 模型，并且训练损失确实会下降，但仍然存在一些杂项阻碍问题。[[GitHub 问题跟踪](https:\u002F\u002Fgithub.com\u002Fminimaxir\u002Faitextgen\u002Fissues\u002F3)]\n\n## 即将推出的功能\n\naitextgen 当前的版本（v0.5.X）**被视为测试版**，主要针对最常见的使用场景。迄今为止编写的笔记本和示例都经过测试，能够正常工作，但在接下来的几个月里，除了修复上述已知问题外，还将进一步完善文档和用例说明。\n\naitextgen 的后续版本（也是我最初开发这个包的原因之一）将原生支持 _基于模式的生成_。（请参阅 [此仓库](https:\u002F\u002Fgithub.com\u002Fminimaxir\u002Fgpt-2-keyword-generation) 以获取粗略的概念验证。）\n\n此外，我还计划开发一个 aitextgen 的 [SaaS](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_as_a_service) 解决方案，使任何人都能在云端运行 aitextgen，并只需点击几下就能构建 API、Twitter+Slack+Discord 机器人。（主要限制在于计算成本；如果有风险投资家对资助此类服务感兴趣，请与我联系。）\n\n更多暂定功能已列在 [UPCOMING.md](UPCOMING.md) 文档中。\n\n## 伦理\n\naitextgen 是一款主要用于辅助创作的工具，而非用于欺骗的工具。尽管模仿账号是该软件包的一个典型应用场景，但请务必在您生成的内容中尽可能透明地说明其生成方法。这包括：\n\n- 明确声明文本是由 aitextgen 和\u002F或 GPT-2 模型架构生成的。（如果能附上本仓库的链接就更好了！）\n- 如果是在模仿某个人，请明确指出这是模仿作品，并说明模仿的对象是谁。\n- 如果生成的文本经过人工筛选，或者完全是无监督的随机输出，也应予以说明。\n- 标明谁在维护或编辑由 AI 生成的文本。\n- 尽最大努力从生成的文本中移除与输入文本完全一致的过拟合内容。\n\n将无名的“AI”拟人化为一位抽象的天才固然有趣，但我开发 aitextgen（以及我之前的其他文本生成项目）的原因之一，正是为了让这项技术更加普及，并准确展示其潜力与局限性。**任何故意具有欺骗性的 AI 文本生成项目都可能被我本人否认。**\n\n## 维护者\u002F创作者\n\nMax Woolf ([@minimaxir](https:\u002F\u002Fminimaxir.com))\n\n*Max 的开源项目得到了他的 [Patreon](https:\u002F\u002Fwww.patreon.com\u002Fminimaxir) 和 [GitHub Sponsors](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fminimaxir) 的支持。如果您觉得这个项目对您有帮助，欢迎向 Patreon 捐款，您的每一份支持都将用于富有创意的用途。*\n\n## 许可证\n\nMIT","# aitextgen 快速上手指南\n\naitextgen 是一个强大的 Python 工具，基于 PyTorch、Hugging Face Transformers 和 pytorch-lightning 构建，专门用于 GPT-2 和 GPT Neo 架构的文本训练与生成。它是 textgenrnn 和 gpt-2-simple 的继任者，提供了更快的生成速度、更高的内存效率以及对多 GPU 训练的支持。\n\n## 环境准备\n\n*   **操作系统**：支持 Linux、macOS 和 Windows。\n*   **Python 版本**：建议 Python 3.7 或更高版本。\n*   **硬件要求**：\n    *   **CPU**：可用于推理和小规模训练（示例中展示了 CPU 训练配置）。\n    *   **GPU**：推荐用于微调和大规模训练（支持 NVIDIA CUDA）。\n    *   **多 GPU\u002FTPU**：支持多 GPU 训练；TPU 支持目前处于实验阶段，存在已知问题，暂不推荐生产使用。\n*   **前置依赖**：安装过程会自动处理 `torch`、`transformers` 和 `pytorch-lightning` 等依赖项。\n\n> **国内加速提示**：如果下载模型或依赖包速度较慢，建议配置国内镜像源。\n> *   pip 镜像：`pip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple ...`\n> *   HuggingFace 镜像：设置环境变量 `export HF_ENDPOINT=https:\u002F\u002Fhf-mirror.com`\n\n## 安装步骤\n\n通过 PyPI 直接安装最新稳定版：\n\n```sh\npip3 install aitextgen\n```\n\n若需使用国内镜像源加速安装：\n\n```sh\npip3 install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple aitextgen\n```\n\n## 基本使用\n\n### 1. 快速生成文本（使用预训练模型）\n\n无需任何额外数据，即可下载并加载 OpenAI 的 124M GPT-2 \"small\" 模型进行文本生成。\n\n**Python 代码示例：**\n\n```py3\nfrom aitextgen import aitextgen\n\n# 初始化：自动下载、缓存并加载 124M GPT-2 模型\nai = aitextgen()\n\n# 生成一段文本\nai.generate()\n\n# 生成 3 段文本，每段最大长度 100 tokens\nai.generate(n=3, max_length=100)\n\n# 基于提示词生成\nai.generate(n=3, prompt=\"I believe in unicorns because\", max_length=100)\n\n# 将生成的 10 段文本保存到文件，并调整温度参数增加多样性\nai.generate_to_file(n=10, prompt=\"I believe in unicorns because\", max_length=100, temperature=1.2)\n```\n\n**命令行示例：**\n\n```sh\naitextgen generate\naitextgen generate --prompt \"I believe in unicorns because\" --to_file False\n```\n\n### 2. 训练自己的微型模型（CPU\u002FGPU 通用）\n\n以下示例展示如何使用莎士比亚剧本数据集，在本地训练一个轻量级的 GPT-2 模型。\n\n**准备工作：**\n下载训练数据（莎士比亚剧本）：\n```sh\nwget https:\u002F\u002Fraw.githubusercontent.com\u002Fkarpathy\u002Fchar-rnn\u002Fmaster\u002Fdata\u002Ftinyshakespeare\u002Finput.txt\n```\n\n**训练代码示例：**\n\n```py3\nfrom aitextgen.TokenDataset import TokenDataset\nfrom aitextgen.tokenizers import train_tokenizer\nfrom aitextgen.utils import GPT2ConfigCPU\nfrom aitextgen import aitextgen\n\n# 1. 指定训练数据文件\nfile_name = \"input.txt\"\n\n# 2. 训练自定义 BPE Tokenizer\n# 生成文件：aitextgen.tokenizer.json\ntrain_tokenizer(file_name)\ntokenizer_file = \"aitextgen.tokenizer.json\"\n\n# 3. 加载针对 CPU 优化的迷你 GPT-2 配置\n# 输入 token 数量设为 64 (默认为 1024)，适合快速测试\nconfig = GPT2ConfigCPU()\n\n# 4. 初始化 aitextgen 实例\nai = aitextgen(tokenizer_file=tokenizer_file, config=config)\n\n# 5. 构建数据集\n# block_size 需与 config 中的设置一致\ndata = TokenDataset(file_name, tokenizer_file=tokenizer_file, block_size=64)\n\n# 6. 开始训练\n# batch_size=8, 训练 50000 步，每 5000 步生成一次样本并保存模型\nai.train(data, batch_size=8, num_steps=50000, generate_every=5000, save_every=5000)\n\n# 7. 使用训练好的模型生成文本\nai.generate(10, prompt=\"ROMEO:\")\n\n# 8. (可选) 重新加载已训练的模型\nai2 = aitextgen(model_folder=\"trained_model\",\n                tokenizer_file=\"aitextgen.tokenizer.json\")\n\nai2.generate(10, prompt=\"ROMEO:\")\n```\n\n> **注意**：上述 CPU 训练示例在 2020 款 8 核 iMac 上约需 25 分钟。若有 GPU 环境，移除 `GPT2ConfigCPU` 配置即可利用 GPU 加速训练。","一家小型游戏工作室希望为复古 RPG 游戏快速生成大量风格统一的 NPC 对话和物品描述，以丰富游戏世界观。\n\n### 没有 aitextgen 时\n- 开发者需手动编写数千条文本，耗时数周且难以保持语气一致，导致角色性格割裂。\n- 若尝试使用基础 GPT-2 代码微调，配置 PyTorch 环境和显存优化极其复杂，普通笔记本常因内存溢出而崩溃。\n- 无法灵活合并多个数据源（如奇幻小说片段与现有剧本），强行拼接会导致训练数据分布偏差，生成内容杂乱。\n- 缺乏直观的训练进度监控，调试模型超参数如同“黑盒”操作，极大拖慢迭代速度。\n\n### 使用 aitextgen 后\n- 仅需投喂少量精选剧本样本，aitextgen 即可在数小时内微调出专属模型，批量生成风格高度统一的千条对话，效率提升数十倍。\n- 内置的显存优化与 pytorch-lightning 支持让模型能在单张消费级显卡甚至 CPU 上流畅训练，彻底告别环境配置噩梦。\n- 利用其独特的数据集对象功能，轻松合并不同来源的文本数据进行交叉训练，既丰富了语料又避免了风格偏斜。\n- 训练过程自带精美的进度条和日志记录，开发者可实时观察损失变化并灵活调整生成温度等参数，精准控制输出质量。\n\naitextgen 将原本高门槛的文本模型定制转化为开箱即用的工作流，让小型团队也能低成本拥有专属的 AI 内容创作引擎。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fminimaxir_aitextgen_2873a91e.png","minimaxir","Max Woolf","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fminimaxir_3ab20437.jpg","Senior Data Scientist @buzzfeed. Plotter of pretty charts.","@buzzfeed ","San Francisco","max@minimaxir.com",null,"https:\u002F\u002Fminimaxir.com","https:\u002F\u002Fgithub.com\u002Fminimaxir",[86,90,94],{"name":87,"color":88,"percentage":89},"Python","#3572A5",58.9,{"name":91,"color":92,"percentage":93},"Jupyter Notebook","#DA5B0B",40.8,{"name":95,"color":96,"percentage":97},"Dockerfile","#384d54",0.2,1839,216,"2026-02-25T09:11:25","MIT","Linux, macOS, Windows","非必需。支持 CPU、单 GPU、多 GPU 训练；TPU 目前不可用（存在阻塞性问题）。未指定具体显卡型号、显存大小或 CUDA 版本要求，但提供针对 CPU 优化的配置 (GPT2ConfigCPU)。","未说明",{"notes":106,"python":107,"dependencies":108},"该工具是 textgenrnn 和 gpt-2-simple 的继任者，支持微调 OpenAI GPT-2 或 EleutherAI GPT Neo 模型，也可从头训练。虽然可以在没有 GPU 的电脑上运行（如 8 核 iMac），但推荐使用 GPU 以获得更快的速度和更高的内存效率。Google Colab 提供免费 GPU 环境用于演示。首次运行会自动下载并缓存模型文件。伦理方面要求明确标注生成内容来源，避免欺骗性使用。","3.x (文中示例使用 python3，未指定具体小版本号)",[109,110,111],"PyTorch","Hugging Face Transformers","pytorch-lightning",[26,13],"2026-03-27T02:49:30.150509","2026-04-06T07:13:01.852850",[116,121,126,131,136,141],{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},13191,"如何解决导入错误：无法从 'pytorch_lightning.utilities' 导入 '_TPU_AVAILABLE'？","这通常是由于 pytorch-lightning 版本不兼容导致的。解决方案包括：\n1. 先卸载 aitextgen，然后重新安装：`pip uninstall aitextgen` 后再次 `pip install aitextgen`。\n2. 尝试在安装后重启 Jupyter Kernel。\n3. 如果问题依旧，可能需要手动安装特定版本的依赖或等待库的更新修复。","https:\u002F\u002Fgithub.com\u002Fminimaxir\u002Faitextgen\u002Fissues\u002F200",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},13192,"如何在微调大型 GPT-2 模型（如 355M）时避免显存溢出（OOM）？","可以通过启用梯度检查点（Gradient Checkpointing）和其他优化策略来减少显存占用。具体配置如下：\n1. 设置 `config.gradient_checkpointing = True`。\n2. 设置 `config.use_cache = False`。\n3. 训练时使用混合精度 `fp16=True` 并将 `batch_size` 设为 1。\n4. 在 `ai.train(...)` 的参数中添加 `move_metrics_to_cpu=True`。\n5. 考虑将优化器从 Adam 切换为 SM3。\n这些组合可以在 6GB 显存的显卡上微调 355M 模型。","https:\u002F\u002Fgithub.com\u002Fminimaxir\u002Faitextgen\u002Fissues\u002F6",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},13193,"如何使用类似 gpt2-simple 中的 truncate 功能来截断生成的文本？","可以通过指定 `eos_token_id` 参数来实现截断。首先将截断字符转换为 token ID，然后在生成时传入。示例代码：\n```python\ntruncate_char = '###'\neos = ai.tokenizer.convert_tokens_to_ids(ai.tokenizer.tokenize(truncate_char)[0])\nai.generate(n=1, prompt=text, max_length=200, temperature=0.7, top_p=1, eos_token_id=eos)\n```\n如果需要多个截断符，可以将它们都转换并传递给 `eos_token_id`。","https:\u002F\u002Fgithub.com\u002Fminimaxir\u002Faitextgen\u002Fissues\u002F83",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},13194,"为什么在 GPU 上生成文本速度很慢且 CPU 占用率达到 100%？","这通常是由 `repetition_penalty` 参数引起的。在 GPU 上使用该参数会导致严重的性能下降，因为相关计算主要在 CPU 上进行。如果发现生成速度慢且 CPU 满载，请尝试移除或调整 `repetition_penalty` 参数以提升 GPU 利用率。","https:\u002F\u002Fgithub.com\u002Fminimaxir\u002Faitextgen\u002Fissues\u002F34",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},13195,"运行 Colab 微调示例时出现 '__init__() got an unexpected keyword argument 'disable_validation'' 错误怎么办？","这是因为 `pytorch-lightning` 0.8.0 版本已弃用 `disable_validation` 参数，而旧版 aitextgen 仍在使用它。解决方法有两种：\n1. 降级 pytorch-lightning：在安装 aitextgen 之前运行 `!pip3 install pytorch-lightning==0.7.6`。\n2. 升级 aitextgen 到 0.2.1 或更高版本，该版本已移除了该参数。","https:\u002F\u002Fgithub.com\u002Fminimaxir\u002Faitextgen\u002Fissues\u002F33",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},13196,"安装支持 CUDA 的 Torch 版本后，训练时出现 subprocess 调用错误如何解决？","这通常是环境变量（PATH）未正确更新导致的。解决方法包括：\n1. 将 NVIDIA 驱动目录（如 `C:\\Program Files\\NVIDIA Corporation\\NVSMI`）添加到系统或用户的环境变量 PATH 中。\n2. 添加完成后，必须重启计算机以使更改生效。\n3. 确保添加的是目录路径而不是具体的 exe 文件。","https:\u002F\u002Fgithub.com\u002Fminimaxir\u002Faitextgen\u002Fissues\u002F112",[147,152,157,162,167,172,177,182,187,192,196,201,206],{"id":148,"version":149,"summary_zh":150,"released_at":151},71854,"v0.6.0","不幸的是，我一直在埋头开发训练器的新版本，结果错过了 PyTorch Lightning 的一些弃用提示。\n\n* 合并了 #191 \n* 将 PyTorch Lightning 的最低版本升级至 1.7.0\n\n再次强调，我的目标是迁移到基于 Hugging Face 的训练器，以避免这些弃用问题。","2022-08-09T04:57:59",{"id":153,"version":154,"summary_zh":155,"released_at":156},71855,"v0.5.2","PyTorch Lightning 曾弃用一个导致训练中断的功能；该问题现已修复。\n\n* 初步的 TPU 支持 + 更为规范的 PyTorch Lightning 训练 (#105)\n* 将 PyTorch Lightning 的最低版本提升至 1.3.1\n* 模式生成相关修复","2021-05-17T03:10:56",{"id":158,"version":159,"summary_zh":160,"released_at":161},71856,"v0.5.1","aitextgen v0.5.1 修复了一个长期存在的、针对短文本内容的生成 bug，该 bug 是在无意中引入的。现在这个问题已经得到解决。\n\n## 短文本生成\n\n* 在训练时，配置文件中会自动添加一个新字段 `line_by_line`，用于指示使用的 `TokenDataset` 是否按行加载（例如 CSV 文件）。\n* 在生成时，如果加载的模型配置中 `line_by_line=True`，生成过程会自动在文本开头添加 `bos_token`，以告知模型当前处于文本的起始位置。这将显著提升生成文本的质量。\n\n如果你有一个使用按行数据集训练的旧模型，仍然可以通过以下任一方式继续使用此工作流：\n\n* 手动在模型的 `config.json` 中添加 `\"line_by_line\": true`。\n* 在加载模型时，调用 `setattr(ai.model.config, \"line_by_line\", True)`。\n* 将 `generate()` 方法中的新参数 `prepend_bos` 设置为 `True`。\n\n## 其他修复\n\n* 改进了基于模式的生成逻辑，使其运行更加正确。\n* 通过 `tokenizer_file` 加载分词器时，现在会使用 `PreTrainedTokenizerFast` 类，该类对特殊标记的处理更加准确。\n* 添加了 `skip_special_tokens` 参数，用于强制打印生成的标记：这对于调试基于模式的生成非常有帮助。","2021-05-01T23:30:25",{"id":163,"version":164,"summary_zh":165,"released_at":166},71857,"v0.5.0","aitextgen 已更新，新增对 GPT Neo 的支持，并修复了一些未解决的生成问题！然而，在此过程中也引入了几项破坏性变更。\n\n## 破坏性变更\n\n### 模型加载\n\n为了支持 GPT Neo 并使模型加载架构无关，我们发现 aitextgen 之前是以非官方方式加载模型的，现已予以修正。用户现在必须指定包含 `pytorch_model.bin` 和 `config.json` 文件的 `model_folder` 目录（文件名必须完全匹配）。\n\n假设模型位于 `trained_folder` 中：\n\n旧版：\n\n```py3\nai2 = aitextgen(model=\"trained_model\u002Fpytorch_model.bin\",\n                tokenizer_file=\"aitextgen.tokenizer.json\",\n                config=\"trained_model\u002Fconfig.json\")\n```\n\n新版：\n\n```py3\nai2 = aitextgen(model_folder=\"trained_model\",\n                \t   tokenizer_file=\"aitextgen.tokenizer.json\")\n```\n\n所有笔记本和文档均已更新为新的工作流程；若仍使用旧版行为，将触发断言错误。\n\n### Colab 训练的 GPT-2 分词器分词错误\n\n由于 `tokenizers` 库近期的一次变更，导致默认 GPT-2 分词器无法正确处理 `\u003C|endoftext|>` 标记，从而影响了文本截断功能。这一问题仅在以下情况下出现：使用 Colab GPT-2 笔记本逐行训练文本时。目前唯一的解决方案是使用 v0.5.0 版本重新训练模型。\n\n## 其他主要变更与修复\n\n### GPT Neo 支持\n\n现正式支持 GPT Neo！Colab 笔记本已更新，说明如何微调该模型的小规模版本。\n\nGPT-Neo 的所有变体都具有 2048 个上下文窗口长度（而 GPT-2 仅为 1024），因此生成长度可翻倍。此外，预训练模型使用的数据更为最新。微调 GPT Neo 模型每步所需时间约为 GPT-2 模型的两倍；值得注意的是，通常增加上下文窗口会导致训练时间呈二次方而非线性增长，但 GPT Neo 似乎收敛得更快。\n\n不过，在文本生成性能方面，目前尚不清楚 GPT Neo 是否“更好”，尤其是在短文本内容上。aitextgen 的后续版本将进一步深入分析这一点。\n\n### DeepSpeed 支持 [BETA] (#103)\n\n感谢 PyTorch Lightning 团队的努力，aitextgen 现已添加 DeepSpeed 支持，允许使用多 GPU 训练更大规模的模型（超过 15 亿参数）。然而，该功能尚未经过全面测试，相关文档仍在准备中！\n\n## 其他变更\n\n- 在 `generate()` 方法中新增 `nonempty_output` 参数，默认值为 True：如果输出为空（可能出现在短文本内容中），则在生成多条文本时跳过该输出；若为单条文本，则会尝试重新生成。如果指定了 `min_length`，则在处理后，对于长度低于最小值的文本也会采取相同的行为。\n- 提升了 `transformers` 和 `pytorch-lightning` 的最低版本要求。\n- 完成了另一项 p","2021-04-19T01:15:46",{"id":168,"version":169,"summary_zh":170,"released_at":171},71858,"v0.4.1","* 修复 CSV 加载问题 (#95)\n* 修复用于去除生成文本开头空白字符的正则表达式。（#92）\n* 修复日志记录器显示使用自定义分词器时实际上仍在使用默认分词器的问题。\n* 添加了 `special_tokens` 参数，允许用户指定一个要从生成输出中移除的标记 ID 列表（默认为 `bos_token_id` 和 `eos_token_id`）。","2021-03-09T04:37:58",{"id":173,"version":174,"summary_zh":175,"released_at":176},71859,"v0.4.0","0.4.0 是一个重要的版本！`transformers` 4.3.0 的发布引入了一个破坏性问题，因此我们需要更及时地推出新版本；很可能还会有一个 0.4.1 的 bug 修复版。（同时，新的文档也在制作中。）我还计划展示一些新功能的演示！\n\n## 更新 transformers 和 pytorch-lightning\n\n`transformers` 的最低版本已提升至 4.3.0，该版本包含多项性能改进，例如更快的 GPT-2 训练和生成速度。此外，快速分词器现在已成为全局默认设置。`pytorch-lightning` 则升级到了 1.2.0，不过这一更新相对平淡一些。\n\n由于 `transformers` 已经固定了自己的分词器依赖，我们已将 `tokenizers` 从依赖中移除。说到这里……\n\n## 序列化自定义分词器\n\n默认情况下，`train_tokenizer()` 会创建一个序列化的单文件分词器（例如 `aitextgen.tokenizer.json`）。该文件也将正确支持 `added_tokens` 参数。\n\n在加载 aitextgen 模型时，可以通过 `tokenizer_file` 参数来加载分词器。当然，如果你有单独的 `merges_file` 和 `vocab_file`，仍然可以使用这些参数。\n\n## 梯度检查点与层冻结\n\n现在 GPT-2 模型支持梯度检查点技术，这使得我们可以微调更大规模的模型，比如 3.55 亿和 7.74 亿参数的 GPT-2 模型！\n\n这也理论上让 15.58 亿参数的模型得以进行微调。此外，我还增加了层冻结的功能，以便在显存限制下训练模型，但效果参差不齐。后续还将进行更深入的分析。\n\n## 基于模式的生成\n\n实现了基于模式的生成的初步版本，该功能利用了新的自定义分词器。\n\n## 其他 bug 修复\n\n- 修复了 TensorFlow 权重的下载地址。\n- 修正了之前用提示文本的字符长度而非 token 长度来判断是否过长的问题（#90）。\n- 通过将特殊 token 的去除逻辑从分词器移至 aitextgen 中，绕过了 `transformers` 4.3.0 版本中的破坏性问题（#90）。\n- 在生成函数中添加了 `lstrip` 参数，用于去除生成文本开头的所有空白字符（与上述问题相关）。\n- 训练过程的刷新频率默认调整为每 20 步一次，以提升在 Jupyter\u002FColab 环境中的运行效率。","2021-02-23T04:21:39",{"id":178,"version":179,"summary_zh":180,"released_at":181},71860,"v0.3.0","本次发布修复了两个包中的破坏性问题，并在此过程中进行了一些小幅调整。\n\n* 最低版本要求现已更新为：`transformers>=4.0.0`、`pytorch-lightning>=1.0.8` 和 `torch>=1.6.0`，并针对这些主要版本的破坏性问题进行了修复。\n* 对生成过程进行了微调，使其更符合 transformers 4 中最新的实现方式。\n* 将训练的默认刷新率设置为 20，以 [让 pytorch-lightning 更加满意](https:\u002F\u002Fgithub.com\u002FPyTorchLightning\u002Fpytorch-lightning\u002Fpull\u002F4654)。\n* 将训练的默认学习率设为 `1e-3`，因为我已经不记得当初为何将其设为 `1e-4` 了。\n* 将分词器的默认词汇表大小以及 CPU 配置中的词汇表大小均由 `5000` 调整为 `1000`，因为这样在演示中可以实现更简单、更快的训练。\n* 已确认，在支持的 GPU 上启用 `fp16=True` 进行 GPU 训练现在可以正常工作。\n\n未来的版本将添加更多明确的功能。在此期间可能会出现额外的控制台输出；我会尽力设法去除这些输出。","2020-12-01T03:30:08",{"id":183,"version":184,"summary_zh":185,"released_at":186},71861,"v0.2.3","此修复解决了因 PyTorch Lightning 0.8.4 版本更新而导致训练失败的问题（#44）。\n\n该覆盖仅用于测试；无论如何，为了即将在 PyTorch 1.6 中推出的原生 AMP 功能，都必须将其移除。\n\n不知为何，在进行这项更改后，模型的损失下降得更快了：可能需要进一步调查学习率调度器是否仍能正常工作。","2020-07-05T16:25:09",{"id":188,"version":189,"summary_zh":190,"released_at":191},71862,"v0.2.2","`transformers 3.0.0` 引入了一些破坏性变更，因此目前将版本上限设置为低于该版本。","2020-07-02T05:14:43",{"id":193,"version":194,"summary_zh":82,"released_at":195},71863,"v0.2.1","2020-06-28T19:29:33",{"id":197,"version":198,"summary_zh":199,"released_at":200},71864,"v0.2.0","`TokenDataset` 现在由 NumPy 提供支持，这意味着 aitextgen 现在可以兼容更大的（超过 1GB）数据集，而不会导致宿主机内存溢出！\n\n- 数据集的加载使用预分配的 NumPy 数组，并以分批标记化的形式填充，从而确保内存占用恒定。\n- 训练过程中宿主机的内存占用同样保持恒定（通过原生的 NumPy 和 PyTorch 集成实现，无需创建副本数组）。\n- 数据集加载现在带有进度条！\n- 对于单个文本，aitextgen 使用了一个技巧：将文本按换行符分割为多段，从而实现多线程标记化，代价是换行符处的标记化可能会略有不同。（若要禁用此行为并将其作为单个文本处理，请设置 `text_delim = \"\u002Fr\"`）\n- 压缩 `TokenDataset` 时文件大小更小。\n\n此外，进度条的刷新频率（适用于 `train()` 和数据集加载）现在默认每 10 步更新一次，以避免在基于云的 Notebook（如 Colab）中产生额外的带宽消耗。作为副作用，在使用 GPU 时，这种更新方式竟然使训练速度提升了约 25%。\n\n## 破坏性变更\n- 无法加载旧版本中的数据集。这是测试版阶段的正常现象，我并不打算频繁引入此类破坏性变更。\n- `TokenDataset` 上的 `shuffle` 和 `seed` 参数已不再生效；请在加载数据集之前自行处理这些操作。","2020-06-02T04:22:59",{"id":202,"version":203,"summary_zh":204,"released_at":205},71865,"v0.1.1","Changed the generation defaults to `max_length=256` and `temperature=0.7` for a balance between user friendliness and speed.\r\n\r\nNotes about the `max_length` of 1024 for GPT-2 are places where appropriate.","2020-05-17T21:38:25",{"id":207,"version":208,"summary_zh":82,"released_at":209},71866,"v0.1","2020-05-17T17:26:24"]