[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-allenai--OLMo-core":3,"tool-allenai--OLMo-core":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":79,"owner_email":80,"owner_twitter":79,"owner_website":81,"owner_url":82,"languages":83,"stars":100,"forks":101,"last_commit_at":102,"license":103,"difficulty_score":104,"env_os":105,"env_gpu":106,"env_ram":107,"env_deps":108,"category_tags":121,"github_topics":79,"view_count":23,"oss_zip_url":79,"oss_zip_packed_at":79,"status":16,"created_at":122,"updated_at":123,"faqs":124,"releases":154},2795,"allenai\u002FOLMo-core","OLMo-core","PyTorch building blocks for the OLMo ecosystem","OLMo-core 是专为构建和训练 OLMo 系列大语言模型打造的 PyTorch 核心组件库。它旨在解决研究人员在复现先进开源模型时面临的底层架构搭建难题，提供了一套经过验证、模块化且高性能的“积木”，让用户无需从零开始编写复杂的训练代码，即可快速上手模型开发与实验。\n\n这款工具主要面向 AI 研究人员、算法工程师及希望深入探索大模型训练机制的开发者。其技术亮点在于高度优化的训练效率与灵活性：不仅原生支持 Flash Attention、Ring Attention 等主流加速后端，还集成了低内存消耗的融合线性损失计算、Float8 精度训练以及无丢弃混合专家（MoE）架构等前沿特性。此外，OLMo-core 提供了官方的训练脚本和详细的 API 文档，并兼容 Beaker 集群调度，配合官方维护的 Docker 镜像，可大幅降低环境配置门槛。无论是想要复现 OLMo2 等最新模型，还是希望基于成熟架构进行自定义创新，OLMo-core 都能提供坚实可靠的技术底座，助力高效开展大模型研究。","\u003Cdiv align=\"center\">\n  \u003C!-- \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fallenai_OLMo-core_readme_7d4cc5b19f85.png\" width=\"300\"\u002F> -->\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fallenai_OLMo-core_readme_78cfdef47d44.png\" alt=\"OLMo Logo\" width=\"280\" style=\"margin-left:'auto' margin-right:'auto' display:'block'\"\u002F>\n  \u003Cbr>\n  \u003Ch1>OLMo-core\u003C\u002Fh1>\n  \u003Ch4>Building blocks for OLMo modeling and training\u003C\u002Fh4>\n\u003C\u002Fdiv>\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Folmo-core.readthedocs.io\u002Fen\u002Flatest\u002F\">\n    \u003Cimg alt=\"Docs\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAPI-docs-red\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Ftree\u002Fmain\u002Fsrc\u002Fexamples\">\n    \u003Cimg alt=\"Examples\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAPI-examples-994B00\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Freleases\u002Ftag\u002Fv1.9.0\">\n    \u003Cimg alt=\"Pypi\" src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fai2-olmo-core.svg\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Fblob\u002Fmain\u002FLICENSE\">\n    \u003Cimg alt=\"GitHub License\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fallenai\u002FOLMo\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fpdf\u002F2501.00656.pdf\">\n    \u003Cimg alt=\"Paper URL\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Farxiv-2402.00838-orange\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fplayground.allenai.org\">\n    \u003Cimg alt=\"Playground\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAi2-Playground-F0529C\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FsZq3jTNVNG\">\n    \u003Cimg alt=\"Discord\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord%20-%20blue?style=flat&logo=discord&label=Ai2&color=%235B65E9\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n## Installation\n\nFirst install [PyTorch](https:\u002F\u002Fpytorch.org) according to the instructions specific to your operating system and hardware.\n\nFor development, we recommend installing from source:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core.git\ncd OLMo-core\npip install -e .[all]\n```\nOr you can install from PyPI with:\n\n```bash\npip install ai2-olmo-core\n```\n\nThere are a number of optional dependencies that must be installed to use certain functionality as well, including:\n\n- [flash-attn](https:\u002F\u002Fgithub.com\u002FDao-AILab\u002Fflash-attention), [ring-flash-attn](https:\u002F\u002Fgithub.com\u002Fzhuzilin\u002Fring-flash-attention), and [TransformerEngine](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FTransformerEngine) for the corresponding attention backends.\n- [Liger-Kernel](https:\u002F\u002Fgithub.com\u002Flinkedin\u002FLiger-Kernel) for a low-memory \"fused-linear\" loss implementation.\n- [torchao](https:\u002F\u002Fgithub.com\u002Fpytorch\u002Fao) for float8 training.\n- [grouped_gemm](https:\u002F\u002Fgithub.com\u002Ftgale96\u002Fgrouped_gemm) for dropless mixture-of-experts (MoE) models. You may need to compile from source until [PR #21](https:\u002F\u002Fgithub.com\u002Ftgale96\u002Fgrouped_gemm\u002Fpull\u002F21) is released (post v0.1.6).\n- [QuACK](https:\u002F\u002Fgithub.com\u002FDao-AILab\u002Fquack) for some CuTe-based kernels.\n\nThe published [Docker images](https:\u002F\u002Fgithub.com\u002Forgs\u002Fallenai\u002Fpackages?repo_name=OLMo-core) contain all core and optional dependencies, and are regularly tested on our in-house H100 clusters.\nBut there are several things to keep in mind if you intend to use these images:\n\n- They do not come with the OLMo-core package installed, only its dependencies, to accommodate for regular code changes.\n- They may not work on your own cluster if you have different hardware or driver\u002FCUDA versions.\n\nIf the published images do not work for your use-case for any of the above reasons, you could adapt our [Dockerfile](https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Fblob\u002Fmain\u002Fsrc\u002FDockerfile) to build your own images.\n\n## Official training scripts\n\nOfficial training scripts for released models can be found in [`src\u002Fscripts\u002Fofficial\u002F`](https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Ftree\u002Fmain\u002Fsrc\u002Fscripts\u002Fofficial).\n\nThese scripts are meant to be launched with ``torchrun``, or with OLMo-core's Beaker launch CLI if you have access to Beaker.\n\nFor example:\n\n```bash\ntorchrun --nproc-per-node=8 src\u002Fscripts\u002Fofficial\u002FOLMo2\u002FOLMo-2-0325-32B-train.py \\\n  --save-folder=\u002Fpath\u002Fto\u002Fsave\u002Fcheckpoints\n```\n\nYou can override most configuration options from the command-line. For example, to override the learning rate you could launch the script like this:\n\n```bash\ntorchrun --nproc-per-node=8 src\u002Fscripts\u002Fofficial\u002FOLMo2\u002FOLMo-2-0325-32B-train.py \\\n  --save-folder=\u002Fpath\u002Fto\u002Fsave\u002Fcheckpoints \\\n  --train_module.optim.lr=6e-3\n```\n\nTo continue annealing from a checkpoint, we use a separate script which can be launched like this:\n\n```bash\ntorchrun --nproc-per-node=8 src\u002Fscripts\u002Fofficial\u002FOLMo2\u002FOLMo-2-0325-32B-anneal.py \\\n  --save-folder=\u002Fpath\u002Fto\u002Fsave\u002Fcheckpoints \\\n  --checkpoint=https:\u002F\u002Folmo-checkpoints.org\u002Fai2-llm\u002Fpeteish32\u002Fstep721901\n```\n\n### Available Training Scripts\n\n| Model Family | Directory | Description |\n|--------------|-----------|-------------|\n| **OLMo-2** | [`src\u002Fscripts\u002Fofficial\u002FOLMo2\u002F`](https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Ftree\u002Fmain\u002Fsrc\u002Fscripts\u002Fofficial\u002FOLMo2) | Training scripts and model card for OLMo-2 32B models |\n| **OLMo-3** | [`src\u002Fscripts\u002Fofficial\u002FOLMo3\u002F`](https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Ftree\u002Fmain\u002Fsrc\u002Fscripts\u002Fofficial\u002FOLMo3) | Training scripts and model cards for OLMo-3 7B and 32B models |\n\n## Inference\n\n### With Hugging Face Transformers\n\nYou can use our Hugging Face [transformers](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftransformers) integration to run inference on the OLMo checkpoints:\n\n```bash\npip install transformers>=4.57.0\n```\n\n```python\nfrom transformers import AutoModelForCausalLM, AutoTokenizer\nolmo = AutoModelForCausalLM.from_pretrained(\"allenai\u002FOlmo-3-1125-32B\")\ntokenizer = AutoTokenizer.from_pretrained(\"allenai\u002FOlmo-3-1125-32B\")\nmessage = [\"Language modeling is \"]\ninputs = tokenizer(message, return_tensors='pt', return_token_type_ids=False)\n# inputs = {k: v.to('cuda') for k,v in inputs.items()} # optional verifying cuda\n# olmo = olmo.to('cuda')\nresponse = olmo.generate(**inputs, max_new_tokens=100, do_sample=True, temperature=1.0, top_p=0.7)\nprint(tokenizer.batch_decode(response, skip_special_tokens=True)[0])\n```\n\nAlternatively, with the Hugging Face pipeline abstraction:\n\n```python\nfrom transformers import pipeline\nolmo_pipe = pipeline(\"text-generation\", model=\"allenai\u002FOlmo-3-1125-32B\")\nprint(olmo_pipe(\"Language modeling is\"))\n```\n\n### With vLLM\n\n[vLLM](https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Flatest\u002F) provides high-throughput inference for OLMo models. You can use it for offline batched inference:\n\n```bash\npip install vllm>=0.11.0\n```\n\n```python\nfrom vllm import LLM, SamplingParams\nllm = LLM(model=\"allenai\u002FOlmo-3-1125-32B\")\nsampling_params = SamplingParams(temperature=1.0, top_p=0.7)\nprompts = [\"Language modeling is\"]\noutputs = llm.generate(prompts, sampling_params)\nfor output in outputs:\n    prompt = output.prompt\n    generated_text = output.outputs[0].text\n    print(f\"Prompt: {prompt!r}, Generated text: {generated_text!r}\")\n```\n\nFor more details, see the [vLLM documentation](https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Flatest\u002Fgetting_started\u002Fquickstart\u002F#offline-batched-inference).\n\n### With Olmo-core (beta)\n\nAutoregressive generation is supported directly in Olmo-core. Using this capability, we provide a chat-loop demo that can be used to interact with models in an interactive chat session:\n\n```bash\npython -m olmo_core.generate.chat https:\u002F\u002Folmo-checkpoints.org\u002Fai2-llm\u002FOlmo-3-1025-7B\u002Fstage3\u002Fstep11921\u002F --max-new-tokens 512\n```\n\n## Evaluation\n\nAdditional tools for evaluating OLMo models are available at the [OLMo Eval](https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-eval) and [olmes](https:\u002F\u002Fgithub.com\u002Fallenai\u002Folmes) repositories.\n\n## Development\n\nThe Python library source code is located in `src\u002Folmo_core`. The corresponding tests are located in `src\u002Ftest`. The library docs are located in `docs`. You can build the docs locally with `make docs`.\n\nCode checks:\n\n- We use `pytest` to run tests. You can run all tests with `pytest -v src\u002Ftest`. You can also point `pytest` at a specific test file to run it individually.\n- We use `isort` and `black` for code formatting. Ideally you should integrate these into your editor, but you can also run them manually or configure them with a pre-commit hook. To validate that all files are formatted correctly, run `make style-check`.\n- We use `ruff` as our primary linter. You can run it with `make lint-check`.\n- We use `mypy` as our type checker. You can run it with `make type-check`.\n\n## Citing\n\n```bibtex\n@misc{olmo20242olmo2furious,\n      title={{2 OLMo 2 Furious}},\n      author={{Team OLMo} and Pete Walsh and Luca Soldaini and Dirk Groeneveld and Kyle Lo and Shane Arora and Akshita Bhagia and Yuling Gu and Shengyi Huang and Matt Jordan and Nathan Lambert and Dustin Schwenk and Oyvind Tafjord and Taira Anderson and David Atkinson and Faeze Brahman and Christopher Clark and Pradeep Dasigi and Nouha Dziri and Michal Guerquin and Hamish Ivison and Pang Wei Koh and Jiacheng Liu and Saumya Malik and William Merrill and Lester James V. Miranda and Jacob Morrison and Tyler Murray and Crystal Nam and Valentina Pyatkin and Aman Rangapur and Michael Schmitz and Sam Skjonsberg and David Wadden and Christopher Wilhelm and Michael Wilson and Luke Zettlemoyer and Ali Farhadi and Noah A. Smith and Hannaneh Hajishirzi},\n      year={2024},\n      eprint={2501.00656},\n      archivePrefix={arXiv},\n      primaryClass={cs.CL},\n      url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2501.00656},\n}\n```\n","\u003Cdiv align=\"center\">\n  \u003C!-- \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fallenai_OLMo-core_readme_7d4cc5b19f85.png\" width=\"300\"\u002F> -->\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fallenai_OLMo-core_readme_78cfdef47d44.png\" alt=\"OLMo Logo\" width=\"280\" style=\"margin-left:'auto' margin-right:'auto' display:'block'\"\u002F>\n  \u003Cbr>\n  \u003Ch1>OLMo-core\u003C\u002Fh1>\n  \u003Ch4>构建 OLMo 模型与训练的基础组件\u003C\u002Fh4>\n\u003C\u002Fdiv>\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Folmo-core.readthedocs.io\u002Fen\u002Flatest\u002F\">\n    \u003Cimg alt=\"文档\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAPI-docs-red\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Ftree\u002Fmain\u002Fsrc\u002Fexamples\">\n    \u003Cimg alt=\"示例\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAPI-examples-994B00\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Freleases\u002Ftag\u002Fv1.9.0\">\n    \u003Cimg alt=\"Pypi\" src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fai2-olmo-core.svg\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Fblob\u002Fmain\u002FLICENSE\">\n    \u003Cimg alt=\"GitHub 许可证\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fallenai\u002FOLMo\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fpdf\u002F2501.00656.pdf\">\n    \u003Cimg alt=\"论文链接\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Farxiv-2402.00838-orange\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fplayground.allenai.org\">\n    \u003Cimg alt=\"游乐场\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAi2-Playground-F0529C\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FsZq3jTNVNG\">\n    \u003Cimg alt=\"Discord\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord%20-%20blue?style=flat&logo=discord&label=Ai2&color=%235B65E9\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n## 安装\n\n首先，请根据您的操作系统和硬件配置，按照 [PyTorch](https:\u002F\u002Fpytorch.org) 的官方说明进行安装。\n\n对于开发环境，我们建议从源码安装：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core.git\ncd OLMo-core\npip install -e .[all]\n```\n\n或者您也可以通过 PyPI 直接安装：\n\n```bash\npip install ai2-olmo-core\n```\n\n此外，还有一些可选依赖项需要单独安装，以支持特定功能，包括：\n\n- [flash-attn](https:\u002F\u002Fgithub.com\u002FDao-AILab\u002Fflash-attention)、[ring-flash-attn](https:\u002F\u002Fgithub.com\u002Fzhuzilin\u002Fring-flash-attention) 和 [TransformerEngine](https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FTransformerEngine)，用于相应的注意力后端。\n- [Liger-Kernel](https:\u002F\u002Fgithub.com\u002Flinkedin\u002FLiger-Kernel)，用于低内存“融合线性”损失实现。\n- [torchao](https:\u002F\u002Fgithub.com\u002Fpytorch\u002Fao)，用于 float8 训练。\n- [grouped_gemm](https:\u002F\u002Fgithub.com\u002Ftgale96\u002Fgrouped_gemm)，用于无丢弃的专家混合（MoE）模型。在 [PR #21](https:\u002F\u002Fgithub.com\u002Ftgale96\u002Fgrouped_gemm\u002Fpull\u002F21) 发布之前（v0.1.6 版本之后），可能需要从源码编译。\n- [QuACK](https:\u002F\u002Fgithub.com\u002FDao-AILab\u002Fquack)，用于一些基于 CuTe 的内核。\n\n我们发布的 [Docker 镜像](https:\u002F\u002Fgithub.com\u002Forgs\u002Fallenai\u002Fpackages?repo_name=OLMo-core) 包含了所有核心及可选依赖，并且会在我们的内部 H100 集群上定期测试。不过，如果您打算使用这些镜像，需要注意以下几点：\n\n- 这些镜像仅包含 OLMo-core 的依赖项，而未预装 OLMo-core 包本身，以便适应代码的频繁更新。\n- 如果您的集群硬件或驱动程序\u002FCUDA 版本不同，这些镜像可能无法正常工作。\n\n如果由于上述原因导致发布的镜像无法满足您的需求，您可以参考我们的 [Dockerfile](https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Fblob\u002Fmain\u002Fsrc\u002FDockerfile)，自行构建适合您环境的镜像。\n\n## 官方训练脚本\n\n已发布模型的官方训练脚本位于 [`src\u002Fscripts\u002Fofficial\u002F`](https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Ftree\u002Fmain\u002Fsrc\u002Fscripts\u002Fofficial) 目录下。\n\n这些脚本通常需要配合 `torchrun` 使用，或者如果您有 Beaker 访问权限，则可以使用 OLMo-core 提供的 Beaker 启动 CLI 来运行。\n\n例如：\n\n```bash\ntorchrun --nproc-per-node=8 src\u002Fscripts\u002Fofficial\u002FOLMo2\u002FOLMo-2-0325-32B-train.py \\\n  --save-folder=\u002Fpath\u002Fto\u002Fsave\u002Fcheckpoints\n```\n\n您还可以通过命令行覆盖大多数配置选项。例如，要调整学习率，可以这样启动脚本：\n\n```bash\ntorchrun --nproc-per-node=8 src\u002Fscripts\u002Fofficial\u002FOLMo2\u002FOLMo-2-0325-32B-train.py \\\n  --save-folder=\u002Fpath\u002Fto\u002Fsave\u002Fcheckpoints \\\n  --train_module.optim.lr=6e-3\n```\n\n若需从检查点继续训练，我们可以使用另一份专门的脚本，如下所示：\n\n```bash\ntorchrun --nproc-per-node=8 src\u002Fscripts\u002Fofficial\u002FOLMo2\u002FOLMo-2-0325-32B-anneal.py \\\n  --save-folder=\u002Fpath\u002Fto\u002Fsave\u002Fcheckpoints \\\n  --checkpoint=https:\u002F\u002Folmo-checkpoints.org\u002Fai2-llm\u002Fpeteish32\u002Fstep721901\n```\n\n### 可用的训练脚本\n\n| 模型系列 | 目录 | 描述 |\n|----------|------|------|\n| **OLMo-2** | [`src\u002Fscripts\u002Fofficial\u002FOLMo2\u002F`](https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Ftree\u002Fmain\u002Fsrc\u002Fscripts\u002Fofficial\u002FOLMo2) | OLMo-2 32B 模型的训练脚本及模型卡片 |\n| **OLMo-3** | [`src\u002Fscripts\u002Fofficial\u002FOLMo3\u002F`](https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Ftree\u002Fmain\u002Fsrc\u002Fscripts\u002Fofficial\u002FOLMo3) | OLMo-3 7B 和 32B 模型的训练脚本及模型卡片 |\n\n## 推理\n\n### 使用 Hugging Face Transformers\n\n您可以通过我们与 Hugging Face [transformers](https:\u002F\u002Fgithub.com\u002Fhuggingface\u002Ftransformers) 的集成，在 OLMo 检查点上进行推理：\n\n```bash\npip install transformers>=4.57.0\n```\n\n```python\nfrom transformers import AutoModelForCausalLM, AutoTokenizer\nolmo = AutoModelForCausalLM.from_pretrained(\"allenai\u002FOlmo-3-1125-32B\")\ntokenizer = AutoTokenizer.from_pretrained(\"allenai\u002FOlmo-3-1125-32B\")\nmessage = [\"语言建模是 \"]\ninputs = tokenizer(message, return_tensors='pt', return_token_type_ids=False)\n# inputs = {k: v.to('cuda') for k,v in inputs.items()} # 可选：验证是否使用 GPU\n# olmo = olmo.to('cuda')\nresponse = olmo.generate(**inputs, max_new_tokens=100, do_sample=True, temperature=1.0, top_p=0.7)\nprint(tokenizer.batch_decode(response, skip_special_tokens=True)[0])\n```\n\n或者，您也可以使用 Hugging Face 的管道抽象：\n\n```python\nfrom transformers import pipeline\nolmo_pipe = pipeline(\"text-generation\", model=\"allenai\u002FOlmo-3-1125-32B\")\nprint(olmo_pipe(\"语言建模是\"))\n```\n\n### 使用 vLLM\n\n[vLLM](https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Flatest\u002F) 提供了针对 OLMo 模型的高吞吐量推理能力。您可以用它来进行离线批量推理：\n\n```bash\npip install vllm>=0.11.0\n```\n\n```python\nfrom vllm import LLM, SamplingParams\nllm = LLM(model=\"allenai\u002FOlmo-3-1125-32B\")\nsampling_params = SamplingParams(temperature=1.0, top_p=0.7)\nprompts = [\"语言建模是\"]\noutputs = llm.generate(prompts, sampling_params)\nfor output in outputs:\n    prompt = output.prompt\n    generated_text = output.outputs[0].text\n    print(f\"Prompt: {prompt!r}, Generated text: {generated_text!r}\")\n```\n\n更多详细信息，请参阅 [vLLM 文档](https:\u002F\u002Fdocs.vllm.ai\u002Fen\u002Flatest\u002Fgetting_started\u002Fquickstart\u002F#offline-batched-inference)。\n\n### 使用 Olmo-core（beta 版）\n\n自回归生成功能已直接集成在 Olmo-core 中。借助此功能，我们提供了一个聊天循环演示，可用于与模型进行交互式对话：\n\n```bash\npython -m olmo_core.generate.chat https:\u002F\u002Folmo-checkpoints.org\u002Fai2-llm\u002FOlmo-3-1025-7B\u002Fstage3\u002Fstep11921\u002F --max-new-tokens 512\n```\n\n## 评估\n\n用于评估 OLMo 模型的额外工具可在 [OLMo Eval](https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-eval) 和 [olmes](https:\u002F\u002Fgithub.com\u002Fallenai\u002Folmes) 仓库中找到。\n\n## 开发\n\nPython 库的源代码位于 `src\u002Folmo_core` 目录下。相应的测试文件位于 `src\u002Ftest` 目录下。库的文档位于 `docs` 目录中。您可以在本地通过运行 `make docs` 来构建文档。\n\n代码检查：\n\n- 我们使用 `pytest` 运行测试。您可以使用 `pytest -v src\u002Ftest` 运行所有测试，也可以指定某个测试文件单独运行。\n- 我们使用 `isort` 和 `black` 进行代码格式化。理想情况下，您应将这些工具集成到编辑器中，但也可以手动运行它们，或通过 pre-commit 钩子进行配置。要验证所有文件是否格式正确，请运行 `make style-check`。\n- 我们使用 `ruff` 作为主要的代码静态分析工具。您可以使用 `make lint-check` 来运行它。\n- 我们使用 `mypy` 作为类型检查工具。您可以使用 `make type-check` 来运行它。\n\n## 引用\n\n```bibtex\n@misc{olmo20242olmo2furious,\n      title={{2 OLMo 2 Furious}},\n      author={{Team OLMo} and Pete Walsh and Luca Soldaini and Dirk Groeneveld and Kyle Lo and Shane Arora and Akshita Bhagia and Yuling Gu and Shengyi Huang and Matt Jordan and Nathan Lambert and Dustin Schwenk and Oyvind Tafjord and Taira Anderson and David Atkinson and Faeze Brahman and Christopher Clark and Pradeep Dasigi and Nouha Dziri and Michal Guerquin and Hamish Ivison and Pang Wei Koh and Jiacheng Liu and Saumya Malik and William Merrill and Lester James V. Miranda and Jacob Morrison and Tyler Murray and Crystal Nam and Valentina Pyatkin and Aman Rangapur and Michael Schmitz and Sam Skjonsberg and David Wadden and Christopher Wilhelm and Michael Wilson and Luke Zettlemoyer and Ali Farhadi and Noah A. Smith and Hannaneh Hajishirzi},\n      year={2024},\n      eprint={2501.00656},\n      archivePrefix={arXiv},\n      primaryClass={cs.CL},\n      url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2501.00656},\n}\n```","# OLMo-core 快速上手指南\n\nOLMo-core 是 AllenAI 提供的用于构建和训练 OLMo 系列大语言模型的核心工具库。本指南将帮助中国开发者快速完成环境配置并运行基础示例。\n\n## 1. 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**: Linux (推荐 Ubuntu) 或 macOS。\n*   **Python**: 建议 Python 3.9 或更高版本。\n*   **PyTorch**: 必须先安装与您的硬件（CPU\u002FGPU）和操作系统匹配的 PyTorch。\n    *   访问 [PyTorch 官网](https:\u002F\u002Fpytorch.org) 获取安装命令。\n    *   **国内加速**: 推荐使用清华或中科大镜像源安装 PyTorch，例如：\n        ```bash\n        pip install torch torchvision torchaudio --index-url https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n        ```\n*   **可选依赖**: 若需使用 Flash Attention、混合专家模型 (MoE) 或 Float8 训练等高级功能，需额外安装 `flash-attn`、`grouped_gemm` 等库（详见官方文档）。普通推理和基础训练通常不需要立即安装这些。\n\n## 2. 安装步骤\n\n您可以选择从源码安装（推荐用于开发）或从 PyPI 安装（推荐用于快速使用）。\n\n### 方式一：从 PyPI 安装（推荐）\n\n使用国内镜像源可显著提升下载速度：\n\n```bash\npip install ai2-olmo-core -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 方式二：从源码安装（开发模式）\n\n如果您需要修改源码或运行最新示例：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core.git\ncd OLMo-core\npip install -e .[all] -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n> **注意**: 官方提供了预构建的 Docker 镜像，包含所有核心及可选依赖。如果您的集群环境与官方 H100 环境不一致，建议参考仓库中的 `Dockerfile` 自行构建适配本地驱动的镜像。\n\n## 3. 基本使用\n\nOLMo-core 支持多种使用场景，以下是两种最常用的快速入门方式。\n\n### 场景一：使用 Hugging Face Transformers 进行推理\n\n这是最简单的使用方式，适合快速测试模型效果。首先确保安装了较新版本的 transformers：\n\n```bash\npip install \"transformers>=4.57.0\" -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n**Python 代码示例：**\n\n```python\nfrom transformers import AutoModelForCausalLM, AutoTokenizer\n\n# 加载模型和分词器 (以 OLMo-3 32B 为例)\nmodel_name = \"allenai\u002FOlmo-3-1125-32B\"\nolmo = AutoModelForCausalLM.from_pretrained(model_name)\ntokenizer = AutoTokenizer.from_pretrained(model_name)\n\n# 准备输入\nmessage = [\"Language modeling is \"]\ninputs = tokenizer(message, return_tensors='pt', return_token_type_ids=False)\n\n# (可选) 移动到 GPU\n# inputs = {k: v.to('cuda') for k,v in inputs.items()}\n# olmo = olmo.to('cuda')\n\n# 生成文本\nresponse = olmo.generate(**inputs, max_new_tokens=100, do_sample=True, temperature=1.0, top_p=0.7)\n\n# 输出结果\nprint(tokenizer.batch_decode(response, skip_special_tokens=True)[0])\n```\n\n或者使用更简洁的 Pipeline API：\n\n```python\nfrom transformers import pipeline\n\nolmo_pipe = pipeline(\"text-generation\", model=\"allenai\u002FOlmo-3-1125-32B\")\nprint(olmo_pipe(\"Language modeling is\"))\n```\n\n### 场景二：使用 OLMo-core 原生交互式对话\n\nOLMo-core 内置了自回归生成能力，提供了一个简单的聊天循环演示脚本，可直接与模型交互：\n\n```bash\npython -m olmo_core.generate.chat https:\u002F\u002Folmo-checkpoints.org\u002Fai2-llm\u002FOlmo-3-1025-7B\u002Fstage3\u002Fstep11921\u002F --max-new-tokens 512\n```\n\n### 场景三：启动官方训练脚本\n\n若需复现官方模型训练，请使用 `torchrun` 启动位于 `src\u002Fscripts\u002Fofficial\u002F` 下的脚本。以下是一个启动 32B 模型训练的示例：\n\n```bash\ntorchrun --nproc-per-node=8 src\u002Fscripts\u002Fofficial\u002FOLMo2\u002FOLMo-2-0325-32B-train.py \\\n  --save-folder=\u002Fpath\u002Fto\u002Fsave\u002Fcheckpoints\n```\n\n您可以通过命令行参数覆盖默认配置，例如修改学习率：\n\n```bash\ntorchrun --nproc-per-node=8 src\u002Fscripts\u002Fofficial\u002FOLMo2\u002FOLMo-2-0325-32B-train.py \\\n  --save-folder=\u002Fpath\u002Fto\u002Fsave\u002Fcheckpoints \\\n  --train_module.optim.lr=6e-3\n```","某 AI 实验室的研究团队正试图在自有的 H100 集群上复现并改进 OLMo-2-32B 大模型的训练流程，以探索更高效的混合专家（MoE）架构。\n\n### 没有 OLMo-core 时\n- **底层组件重复造轮子**：团队需手动编写复杂的 PyTorch 注意力机制和 MoE 路由逻辑，代码冗长且极易引入难以排查的数值误差。\n- **高性能算子集成困难**：为了加速训练，必须单独配置 flash-attn、TransformerEngine 等依赖，不同版本间的兼容性问题常导致环境搭建耗时数天。\n- **显存优化手段匮乏**：缺乏原生的低内存融合损失函数（如 Liger-Kernel）支持，导致在有限显存下无法提升批量大小（Batch Size），训练效率低下。\n- **复现官方结果受阻**：由于缺少与官方一致的标准化构建模块，自行实现的模型结构难以对齐论文数据，实验结论可信度存疑。\n\n### 使用 OLMo-core 后\n- **模块化快速搭建**：直接调用 OLMo-core 提供的标准化建模组件，几行代码即可构建出与官方架构完全一致的 MoE 模型，聚焦核心算法创新。\n- **开箱即用的高性能后端**：工具自动适配 flash-attn 及 ring-flash-attn 等加速后端，无需手动处理繁琐的依赖编译与版本冲突。\n- **极致显存效率**：内置 Liger-Kernel 和 float8 训练支持，显著降低显存占用，使团队能在同等硬件条件下将批量大小提升 40%，大幅缩短迭代周期。\n- **无缝对齐官方基线**：直接复用官方发布的训练脚本和配置，确保实验起点准确无误，快速验证新想法的有效性。\n\nOLMo-core 通过提供工业级标准化的 PyTorch 构建模块，将大模型研发从繁琐的底层工程中解放出来，让团队能专注于模型架构的创新与优化。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fallenai_OLMo-core_7d4cc5b1.png","allenai","Ai2","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fallenai_65c450d5.png","",null,"ai2-info@allenai.org","http:\u002F\u002Fwww.allenai.org","https:\u002F\u002Fgithub.com\u002Fallenai",[84,88,92,96],{"name":85,"color":86,"percentage":87},"Python","#3572A5",98.9,{"name":89,"color":90,"percentage":91},"Shell","#89e051",0.8,{"name":93,"color":94,"percentage":95},"Dockerfile","#384d54",0.2,{"name":97,"color":98,"percentage":99},"Makefile","#427819",0.1,1100,216,"2026-04-03T05:12:39","Apache-2.0",4,"Linux","训练必需 NVIDIA GPU（官方镜像在 H100 集群测试）；推理可选 CPU\u002FCUDA。需安装特定 CUDA 版本以匹配驱动，具体版本未说明但需支持 PyTorch 及 flash-attn、TransformerEngine 等扩展。","未说明",{"notes":109,"python":107,"dependencies":110},"官方提供的 Docker 镜像包含所有核心及可选依赖，但未预装 OLMo-core 包本身，且仅保证在 H100 硬件及特定驱动\u002FCUDA 版本下运行。若环境不匹配，需基于提供的 Dockerfile 自行构建。训练脚本需通过 torchrun 或 Beaker CLI 启动。部分功能（如 MoE、float8 训练）需要编译安装特定的可选依赖库。",[111,112,113,114,115,116,117,118,119,120],"torch","flash-attn","ring-flash-attn","TransformerEngine","Liger-Kernel","torchao","grouped_gemm","QuACK","transformers>=4.57.0","vllm>=0.11.0",[26,13],"2026-03-27T02:49:30.150509","2026-04-06T06:53:19.439056",[125,130,135,140,145,150],{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},12924,"如何正确下载 Olmo 3 的检查点（checkpoints）和优化器状态以继续训练？","要下载 Olmo 3 的检查点，请确保已安装 [rclone](https:\u002F\u002Frclone.org\u002Finstall\u002F)。您可以使用官方提供的 CSV 文件（例如 OLMo-3-1025-7B.csv）中的 URL，配合专门的下载脚本进行下载。如果文件大小不符合预期，请检查是否正确使用了 rclone 以及脚本参数。具体脚本逻辑可参考社区提供的 `download_checkpoint.py`，该脚本支持通过 CSV manifest 批量下载分片文件。","https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Fissues\u002F623",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},12925,"技术报告中提到高学习率效果更好，为什么最终选择了较低的学习率？是否存在矛盾或笔误？","这是一个常见的误解。虽然实验数据显示在特定设置下高学习率表现更好（高出 2.8 个点），但这并不足以推翻现有的机器学习经验法则，且需要更多研究来验证其可靠性。维护者指出，他们确实进行了相关探索（如 OLMo2 的学习率实验），并验证了这些发现在大规模训练中的有效性。最终选择较低学习率通常是出于训练稳定性、泛化能力或与其他超参数配合的综合考量，而非单纯依据单一数据点。详细分析可参考相关预印本论文（arXiv:2510.06213）。","https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Fissues\u002F373",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},12926,"为什么 OLMo-core 不在训练循环中采用自适应评估（Fluid Eval）策略？","尽管自适应评估（如 Fluid LM Benchmarking）在减少评估项数量和降低方差方面表现出色，但它不适合 OLMo-core 的当前架构，主要原因包括：\n1. **并行计算限制**：OLMo 的大规模训练会将评估实例分布到多个主机上并行处理，而自适应测试本质上是顺序执行的，无法利用并行优势，反而可能增加墙钟时间。\n2. **记录完整性需求**：训练过程中需要在每个检查点保留完整的评估记录以便横向对比，动态更换任务集会破坏这种可比性。\n3. **信号噪声比**：预先选定的固定任务集能更好地保证整个训练过程中的信号一致性。\n因此，维护者建议将自适应评估应用于下游生成式评估（如 OLMES 项目），那里单样本成本较高，减少评估数量更有意义。","https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Fissues\u002F491",{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},12927,"olmo-checkpoints.org 网站无法访问，如何下载 Olmo 2 32B 模型的检查点？","如果官方网站暂时不可用，可以通过 GitHub 上的官方 manifest 文件配合自定义脚本下载。具体步骤如下：\n1. 下载 manifest 文件：\n   ```bash\n   curl -O https:\u002F\u002Fraw.githubusercontent.com\u002Fallenai\u002FOLMo-core\u002Fmain\u002Fsrc\u002Fscripts\u002Fofficial\u002FOLMo2\u002FOLMo-2-0325-32B.csv\n   ```\n2. 使用以下 Python 脚本（保存为 `download_checkpoint.py`）进行下载：\n   ```python\n   import argparse, csv, os, requests\n   from pathlib import Path\n   from tqdm import tqdm\n   from urllib.parse import urljoin\n\n   def download_file(url, save_path, chunk_size=8192):\n       response = requests.get(url, stream=True)\n       response.raise_for_status()\n       total_size = int(response.headers.get('content-length', 0))\n       with open(save_path, 'wb') as f, tqdm(desc=save_path.name, total=total_size, unit='iB', unit_scale=True) as bar:\n           for data in response.iter_content(chunk_size=chunk_size):\n               size = f.write(data)\n               bar.update(size)\n\n   # 解析 CSV 并调用 download_file 函数下载每个分片\n   ```\n3. 运行命令：\n   ```bash\n   python download_checkpoint.py download OLMo-2-0325-32B.csv --step 721901 --save-dir .\u002Fcheckpoints\n   ```\n此方法适用于 Olmo 2 32B 模型，也可调整后用于其他版本。","https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Fissues\u002F485",{"id":146,"question_zh":147,"answer_zh":148,"source_url":149},12928,"训练过程中出现频繁的 torch.compile 重编译问题，原因是 block_kwargs 中的动态形状和标量变化，如何解决？","该问题由 `block_kwargs` 中的两个参数引起：\n1. `cu_doc_lens`：动态形状张量，未标记为动态导致每次形状变化都触发重编译。\n2. `max_seq_len`：变化的 Python 整数标量，默认会被编译器特化，值变化即触发重编译。\n\n解决方案是修改代码以避免对这些变量进行不必要的特化。维护者已通过 PR #504 修复了此问题，具体措施包括在不禁用 `dispatch_flash_attn` 编译的前提下，优化参数传递方式，防止因动态形状或标量变化导致的缓存失效。建议用户更新至最新代码版本以获得性能提升。","https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-core\u002Fissues\u002F500",{"id":151,"question_zh":152,"answer_zh":153,"source_url":129},12929,"下载 Olmo 检查点时是否需要特殊工具？是否有推荐的下载流程？","是的，推荐使用 [rclone](https:\u002F\u002Frclone.org\u002Finstall\u002F) 工具来下载 Olmo 检查点，因为它能高效处理大文件和多分片下载。基本流程如下：\n1. 安装 rclone。\n2. 获取官方提供的 CSV manifest 文件（包含所有分片的下载链接）。\n3. 使用社区提供的 Python 脚本解析 CSV 并调用 rclone 或直接通过 HTTP 请求下载每个分片。\n4. 确保网络稳定，建议使用断点续传功能以防中断。\n维护者多次强调 rclone 的重要性，并确认该方法适用于 Olmo 2 和 Olmo 3 系列模型。",[155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250],{"id":156,"version":157,"summary_zh":158,"released_at":159},71603,"v2.4.0","## 新增内容\n\n### 新增 🎉\n\n- 在训练器中新增了跳过指定步骤范围的选项。\n- 当 Beaker 作业似乎卡住时，发送 Slack 通知。\n- 向 `NumpyDataLoaderConfig` 添加了 `ignore_fingerprint_mismatch` 参数，允许从包含不同数据集组合的检查点恢复训练。\n- 当找不到 OLMo-mix-0625 文件时，添加了有用的错误提示信息，引导用户使用 OLMo-mix-0925 和指纹覆盖标志。\n- 添加了 `olmo_core.generate.chat` 模块，允许直接与 OlmoCore 模型交互，无需转换为其他格式。\n- 添加了用于监控梯度、激活值和参数（GAP）的 `GAPMonitorCallback`。\n- 添加了官方的 Olmo 3 7B 和 32B 预训练脚本及数据混合。\n- 添加了官方的 Olmo 3 7B 和 32B 中期训练脚本及数据混合。\n- 添加了官方的 Olmo 3 7B 和 32B 长上下文脚本及数据混合。\n- 添加了一个 `NoOpOptimizer`，该优化器不执行任何操作，不占用内存，可用于调试。\n- 添加了 Olmo 3 32B 的官方配置。\n- Olmo 3 模型卡片和检查点清单。\n\n### 修复 ✅\n\n- 设置了缺失的 `NCCL_NVLSTREE_MAX_CHUNKSIZE` 环境变量，该变量现在是运行 Augusta 集群作业所必需的。\n- 修复了 `RemoteFileSystemReader` 导致内存过度使用的 bug。\n- 构建 `SourceMixtureDatasetConfig` 时不再覆盖 `random` 的随机数生成器种子。\n- 修复了 `olmo_core.nn.hf.checkpoint.save_hf_model` 和 `examples\u002Fhuggingface` 中对 URL 的处理问题。\n- 修复了在使用实例掩码时可能出现的 NaN 损失问题。\n- 在训练 Olmo3 32B 期间开发的稳定性改进。\n\n### 变更 ⚠️\n\n- 移除了 `YaRNRoPEScalingConfig` 中未使用的字段。\n\n## 提交记录\n\n1ed8900e (chore) 准备发布 v2.4.0\n2c179c2b (chore) 准备发布 v2.4.0 (#467)\n7e0431f9 修复 7B 中期训练脚本链接 (#469)\n843fe3d3 Olmo3 模型卡片、检查点清单和自述文件 (#468)\ncbdc2f1a Olmo3 32B 清理与提交 (#460)\n20548a05 官方 Olmo3 32B 长上下文脚本 (#465)\n14b15cc2 官方 Olmo3 32B 中期训练脚本及数据混合 (#466)\na25a5144 官方 Olmo3 32B 预训练配置及数据混合 (#464)\n6b73ba05 官方 Olmo3-7B 长上下文脚本 (#458)\nbdc61e4a 官方 Olmo3-7B 中期训练脚本 (#445)\n55804bf8 32B 官方配置 (#454)\na86131dd 对 Yarn 缩放配置进行轻微重构 (#456)\n68c74093 正确处理 HF 转换中的目标 URL (#453)\n2504cc28 修正实例掩码以避免 NaN 损失 (#452)\n137274ec 添加回调以监控梯度、激活值和参数 (#446)\n0959a548 改善 `RemoteFileSystemReader` 的内存使用效率 (#451)\n600d2fe2 官方 Olmo3-7B 预训练脚本 (#443)\naccc3100 使启动超时可在 CLI 上配置\naa0e6290 构建 `SourceMixtureDatasetConfig` 时避免覆盖 RNG 种子 (#449)\n98ba2e41 NoOp 优化器 (#444)\n03e68365 OlmoCore 原生聊天接口 (#439)\n7a0bbd76 根据 Google 的建议取消设置两个 NCCL 环境变量\naacb6eba 仅在启用回调时发送本地 Slack 通知 (#441)\nbfc8d7ab 将 Python 最低版本提升至 3.10 (#442)\n96d43d4e 设置缺失的 NCCL_NVLSTREE_","2025-11-20T19:15:12",{"id":161,"version":162,"summary_zh":163,"released_at":164},71604,"v2.3.0","## 新增内容\n\n### 修复 ✅\n\n- 修复了 `launch.beaker` 模块中解析包含用户名和密码的 Git 远程 URL 的问题。\n- 修复了在 `launch.beaker.BeakerLaunchConfig` 中，默认设置步骤无法解析分支时的 bug。\n- Beaker 中的集群名称已更改。\n- 修复了 `SourceMixtureDataset` 中的混合数据四舍五入误差，该误差曾导致训练结束时样本重复。\n- 避免大型任务对 Beaker 造成 DDOS 攻击。\n- 如果为训练器或数据集的工作目录传入 URL，现在会抛出配置错误。此前 URL 会被错误地转换为本地路径，从而导致意外行为。\n- 修复了 `ConsoleLoggerCallback` 在第一个步骤之前尝试记录日志的问题。\n- 仅在训练正常结束时调用 `teardown_distributed_environment()`，以避免在某个进程发生错误时，分布式后端超时期间出现挂起现象。\n- 修复了与 PyTorch 2.8 兼容的张量并行问题。\n- 更多针对 Beaker 集群名称的修复。\n- 即使运行在干运行批次之前被取消，`Callback.post_train()` 仍会被调用。\n- `GarbageCollectorCallback` 即使在 `Trainer.fit()` 因错误退出时，也会恢复 `gc` 设置。\n- 使 MPS 设备上的 `move_to_device` 操作变为阻塞，以解决可能发生的从 CPU 到 MPS 的数据传输错误问题。\n- 修复了 `glob_directory()` 无法匹配某些 glob 模式的 bug。\n- 在 Google Storage API 抛出特定错误时，增加了可重试的错误类型。\n- 在保存检查点后执行垃圾回收，以避免 CPU 内存耗尽。\n- 避免使用 NumpyPackedFSLDataset 时可能出现的溢出错误。\n- 修复了 NumpyFSLDatasetMixture 和 SourceMixtureDataset 结合使用时，部分实例序列长度不一致的问题。\n- 在非 CUDA 环境下，Attention 后端将不再默认使用 Flash。\n\n### 变更 ⚠️\n\n- `Trainer.maybe_load_checkpoint()` 的 `dir` 参数现为可选，默认值为 `save_folder`。\n- 将 `LMHead` 中的 `fused_linear_cross_entropy_loss accum_dtype` 设置为 fp32。\n- 将 `NCCL_FASTRAK_PLUGIN_ACCEPT_TIMEOUT_MS` 由 10 分钟增加至 30 分钟。\n- `SlackNotifierCallback` 现在会在保存检查点和每个 epoch 结束时发送通知。\n- 当 `follow=True` 且设置了环境变量 `SLACK_WEBHOOK_URL` 时，`BeakerLaunchConfig.launch()` 默认会发送 Slack 通知。\n- `src\u002Fexamples\u002Fllama\u002F` 已更名为 `src\u002Fexamples\u002Fllm\u002F`。\n- 将评估任务组重构为 `task_groups.py`。\n- `Attention` 类中的 `use_flash` 参数已弃用，请改用 `backend=\"flash_2\"`。\n- 将 `NumpyDatasetConfig` 重构为按底层数据集类分别配置。\n- 重构了 `internal\u002Fexperiment` 模块，以便更方便地修改数据集或提供完全自定义的 `ExperimentConfig`。\n- 简化了 `SourceMixtureDatasetConfig`，移除了冗余的 `sequence_length` 和 `dtype` 字段。\n- `convert_state_from_hf` 的 `model_id` 参数已弃用，转换信息将根据模型类型自动推断。\n- 重构","2025-10-17T16:22:06",{"id":166,"version":167,"summary_zh":168,"released_at":169},71605,"v2.2.0","## 新增内容\n\n### 新增 🎉\n\n- 增加了基于 token 而非 step 来设置 LR 调度器的选项（例如 `--train_module.scheduler.units=tokens`）。\n- 新增了一种“打包”式 NumPy FSL 变体，该变体采用最佳适应递减装箱算法将文档打包成序列，其灵感来源于论文《Fewer Truncates Improve Language Modeling》（arXiv:2404.10830）。\n- 新增模块 `olmo_core.testing`。\n- 新增了一种“交错”式 NumPy FSL 变体，该变体按照论文《LongSkywork: A Training Recipe for Efficiently Extending Context Length in Large Language Models》（arXiv:2406.00605）中的方法，将多个文档交错拼接成序列。\n- 新增滑动窗口注意力功能。\n- 新增 `BatchSizeSchedulerCallback`，用于在训练过程中设置批次大小调度策略。\n- 为 `TrainModule` 添加了可选方法 `.pre_train()`，该方法将在 `Callback.pre_train()` 之后立即执行。\n- `BeakerCallback` 现在会将配置和 Python 依赖项保存到结果数据集中。\n- 为 `Config` 类添加了 `from_file` 方法。\n- 为 OLMES 基础技能评估增加了循环内评估。\n- 为循环内评估新增了快速 MCQA，并翻译了 MBPP 任务。\n- 为循环内少样本 HumanEval BPB 评估新增了支持。\n- 新增了 `fast` 和 `full` 两种循环内推荐方案，其中 `fast` 是 `full` 的约 2–3 倍加速子集。\n- 增加了将模型转换为低精度 HF 模型的支持。\n- 增加了按头进行 QK 归一化的支持。\n- 在循环内评估中，当分词器指定时，添加 BOS 标记（ai2-olmo-eval==0.8.4）。\n- 为 FSL NumPy 数据集中的文档内掩码，增加了 BOS 标记与 EOS 标记匹配的支持。\n- 新增了允许性能分析器在多个进程上记录的选项。\n- 增加了通过服务账号密钥认证，在非 Google 集群上访问 Google 的支持。\n- 在 `convert_checkpoint_from_hf.py` 以及 `olmo_core.nn.hf.checkpoint` 的 `load_hf_model` 方法中，增加了对版本控制的支持。\n- `SkipStepAdamW` 中增加了 `foreach` 支持。\n- 为激活检查点配置新增了 `budget` 模式。\n- 新增了 `io.remove_file()` 和 `io.glob_directory` 函数。\n- 新增了 ABF、PI 和 YaRN 的 RoPE 缩放策略。\n- 新增了一个用于比较两个 WandB 实验的脚本。\n- 为 `nn.buffer_cache.BufferCache` 添加了 `namespace` 选项。\n- 新增了通过 ring-flash-attn 配置上下文并行时的 `head_stride` 选项。\n- 为打包式 FSL 数据集，新增了将多个 npy 源文件分组打包的功能，只需将 `source_group_size` 设置为大于 1 的整数即可。\n- 为 `Trainer.load_checkpoint()` 添加了 `load_optim_state: Optional[bool]` 选项。\n- 新增了 `GenerationModule`，用于 OLMo-core 原生自回归生成，并支持 KV 缓存。\n\n### 变更 ⚠️\n\n- 当输入包含 `labels` 时，`LMHead` 的输出现为一个 4 元组而非 3 元组，形式为 `(logits, loss, ce_loss, z_loss)`，其中 `loss` 是总损失（`ce_loss + z_loss`）。\n- `ConfigSaver` 回调会自动设置其他回调（`WandBCallback`、`CometCallback` 和 `Beaker`）要保存的配置。","2025-08-26T16:44:55",{"id":171,"version":172,"summary_zh":173,"released_at":174},71606,"v2.1.0","## 新增功能\n\n### 新增 🎉\n\n- 添加了 50B Dolmino 11\u002F24 混合模型。\n- 添加了对辅助无损 MoE 负载均衡的支持，类似于 DeepSeek-v3。您可以通过在 `MoERouter` 配置中将 `bias_gamma` 设置为非零浮点数来启用此功能。\n- 添加了对序列级 MoE 负载均衡损失的支持。\n- 兼容 B200s。\n- 在所有调度器中添加了对 `warmup_fraction` 的支持，作为 `warmup_steps` 的替代方案，允许将预热阶段指定为总训练步数的一部分。\n- 从旧的 OLMo 训练器移植了一个更好的 1B 模型配置。\n- 为 `CometCallback` 添加了 `auto_resume` 选项，用于恢复现有运行。\n- （BETA）添加了 `load_hf_model` 和 `save_hf_model` 方法，用于将支持的 OLMo Core 模型保存为 HF transformers 格式。同时添加了用于在两种格式之间转换状态的低级别方法。\n- 添加了通过设置 `eval_on_startup=True` 在 `.pre_train()` 时运行评估回调的功能，并可通过设置 `cancel_after_first_eval=True` 在首次评估完成后取消运行。\n- 添加了对使用 numpy FSL 数据集的标签掩码文件的支持。\n- 在 `BeakerLaunchConfig` 中添加了 `git` 配置。\n\n### 变更 ⚠️\n\n- `TransformerTrainModuleConfig` 现在可以通过添加 `pp_config` 规范来构建 `TransformerPipelineTrainModule`。这使得 `TransformerPipelineTrainModuleConfig` 变得冗余，但为了向后兼容性，它将在下一个主要版本发布之前继续保留。\n- `TrainModule` 中的几个状态字典方法现在接受 `optim` 选项，该选项可以禁用优化器状态的使用。\n- 更新了 `Float8Config` 以适配最新版本的 `torchao`。\n- 撤销了对 `olmo_core.data.numpy_dataset.NumpyFSLDatasetMixture` 应用的修复，该修复导致数据集中实例的形状与数据加载器中实例的形状不匹配。\n- 使 1B 和 7B 的脚本更加相似。\n- 更改了 `convert_checkpoint_from_hf.py` 和 `convert_checkpoint_to_hf.py` 的底层逻辑及顶层参数。\n- 使用 `BeakerLaunchConfig` 启动的 Beaker 实验现在将以启用 ANSI 颜色的方式进行日志记录。\n\n### 修复 ✅\n\n- 修复了在训练结束时基于 epoch 计算总步数的问题。\n- 修复了一个错误：如果已完成的运行被重新启动，训练器可能会尝试保存重复的最终检查点。\n- 当从跟踪 GitHub 分支的分支提交 Beaker 作业时，OLMo-core 现在会指示 Beaker 从分叉仓库而非主仓库拉取代码。\n- 提高了 Beaker 镜像解析的稳定性。\n- 默认模型配置中包含 `t_max` 覆盖项容易造成混淆且易出错，因此我们将其移除了。\n- Beaker 启动器在可能的情况下仅克隆一个分支，这样可以显著加快速度。\n\n## 提交记录\n\nb8070fb (杂项) 准备发布 v2.1.0\n7bc8aa2 移除测试文件中的错误许可证\ndb91b7f 在 BeakerLaunchConfig 中添加 git 配置 (#251)\n36b791a [HF 转换器] 预期模型和优化器状态位于 model_and_optim 子目录中 (#253)\n1f2f6f9 使用 ANSI 颜色记录日志","2025-04-14T18:08:34",{"id":176,"version":177,"summary_zh":178,"released_at":179},71607,"v2.0.1","## 新增内容\n\n### 新增 🎉\n\n- 增加了关于官方 32B 训练运行的信息。\n- 在 Augusta 上运行时，新增对 LL128 的自动支持。\n\n### 修复 ✅\n\n- 32B 的官方配置中存在不切实际的批量大小设置。\n- 对于冻结参数，不再抛出错误，而是忽略 `group_overrides`。\n\n### 移除 👋\n\n- 移除了“融合”交叉熵损失变体。该变体存在 bug，并且在编译后始终表现不如原生 PyTorch 版本。更多信息请参阅 [事故后报告：融合 CE 损失的 bug](https:\u002F\u002Fdocs.google.com\u002Fdocument\u002Fd\u002F1IK6q2gX6mH7eQO_IItCZAYYlm4g4htL4mNWbTQuPKf4\u002Fedit?usp=sharing)。\n\n## 提交记录\n\n27b1ae8 (杂项) 准备发布 v2.0.1\n79ebc7f 添加混合 MoE 变压器架构 (#223)\nbce2b5b 使用 Docker Hub 进行身份验证以避免速率限制\nb1e0bbd 移除融合 CE 损失，重新组织 MoE 内核\u002F操作 (#221)\n56e06ee 忽略冻结参数的 `group_overrides` (#219)\n9d80e8d 更新 README 头部的 logo (#218)\n974e555 修复部分拼写错误，统一命名\n45fe007 更新文档 (#217)\n51aedcf 更多可用配置 (#216)\n47b2ad5 将发布 PR 的注释重新添加回代码中\n\n","2025-03-18T20:56:13",{"id":181,"version":182,"summary_zh":183,"released_at":184},71608,"v2.0.0","## 新增功能\n\n此重大版本引入了几项破坏性更改。我们在此提供了更多信息：[OLMo-core v2 设计与升级指南](https:\u002F\u002Fdocs.google.com\u002Fdocument\u002Fd\u002F1LvANhNzA-MdtiD2pLniLTqB9wxSSuqY435WuJIADeFM\u002Fedit?usp=sharing)。\n\n### 新增 🎉\n\n- 添加了 `TrainModule` 抽象类及其实现 `TransformerTrainModule`，该类封装了模型和优化器。\n- 为 `Trainer.record_metric()` 添加了 `namespace` 参数。\n- 增加了上下文并行的支持。\n- 增加了对 MoE 模型的专家并行支持。\n- 为 Minerva、GSM、HumanEval 和 MBPP 添加了循环内评估（`ai2-olmo-eval==0.7.0`）。\n- 添加了 `CosWithWarmupAndLinearDecay` 学习率调度器。\n- 添加了 `WSD` 学习率调度器。\n\n### 变更 ⚠️\n\n- `Trainer` 现在接收 `TrainModule` 而不是单独的模型和优化器，并且若干配置选项已被移至 `TransformerTrainModule`，包括 `rank_microbatch_size`、`fused_loss`、`compile_loss`、`z_loss_multiplier` 和 `autocast_precision`。\n- 多个 `TransformerModelConfig` 选项已被移至 `TransformerTrainModule` \u002F `TransformerTrainModuleConfig`，包括 `dp_config`、`tp_config`、`float8_config` 和 `compile`。\n\n### 移除 👋\n\n- 移除了以下回调：`MoEHandlerCallback`、`SchedulerCallback`、`MatrixNormalizerCallback`、`GradClipperCallback` 和 `Float8HandlerCallback`。这些回调的功能均已迁移到 `TransformerTrainModule` 类中。\n- 移除了回调方法 `.pre_eval_batch()` 和 `.post_eval_batch()`。\n\n### 修复 ✅\n\n- 修复了在 mps 或 cpu 设备上训练时的模型阶梯代码。\n\n## 提交记录\n\ndfa8f2b (杂项) 准备发布 v2.0.0\n95fb084 添加针对 https:\u002F\u002Fgithub.com\u002Fpytorch\u002Fao\u002Fissues\u002F1871 的临时解决方案 (#205)\n3ce0c58 32B 文档更新 (#210)\n41f8ddc 添加我们 32B 训练脚本的公开“官方”版本 (#214)\n7e58d12 将示例中的数据路径更新为公共 URL (#213)\n4327bb9 将数据上传至 r2 并更新其路径 (#208)\n0e6ea23 各种改进 (#207)\n9ceb1e4 添加 CUDA 12.6 镜像 (#209)\neda3afb 防止为 AC 包装 MoE 模块 (#206)\n6e5b16f 升级 ai2-olmo-eval==0.7.0（循环内 Minerva、GSM、HumanEval、MBPP）(#204)\neccdc00 使外部用户更容易运行训练脚本 (#203)\nda33f5b 修复入口点步骤\n947a293 清理变更日志\n725adf3 V2 (#202)\n\n","2025-03-13T01:42:17",{"id":186,"version":187,"summary_zh":188,"released_at":189},71609,"v1.9.0","## 新增内容\n\n### 修复 ✅\n\n- 确保某些优化器参数组字段不会被检查点中的值覆盖。\n\n### 新增 🎉\n\n- 向 `NumpyDatasetConfig` 添加了 `instance_filter_config` 字段。\n- 添加了将 OLMo 2 检查点转换为 Hugging Face 格式的脚本。\n- 添加了 `BeakerCallback`。\n- 增加了循环内评估吞吐量的日志记录。\n\n### 修复 ✅\n\n- 确保某些优化器参数组字段不会被检查点中的值覆盖。\n- 修复了非零进程报告训练指标时出现部分规约值的问题。\n\n## 提交记录\n\n41a7dbd (杂项) 准备发布 v1.9.0\nd7301e6 32B 脚本 (#201)\nd55562c 记录循环内评估吞吐量 (#200)\n260dafd 在 `SkipStepAdamW` 中添加对 BF16 优化状态的支持 (#148)\ne522437 修复序列长度推断问题\n0bef5aa 允许动态批大小 (#170)\nfa11a40 将旧代码库中的实例过滤功能移植过来 (#157)\n8ef038a 更新桶分布的格式化\nc9ca78a 添加 `BeakerCallback` (#177)\ne1cd8f6 使用有效序列长度\n32cb0fa 用于将使用 OLMo core 训练的 OLMo 2 模型转换为 Hugging Face 格式的脚本 (#158)\nfeb57eb 对训练指标进行全归约 (#166)\n2b43d59 加载后将初始学习率重置为配置值 (#163)\n2902a9c 改进 `Config.from_dict` 方法 (#156)\nb4cee6d 从字典加载配置时忽略类名字段\nc1d1a53 更新 DTensor 导入，使用公共模块 (#153)\n4594231 在运行脚本前激活虚拟环境\n\n","2025-03-10T20:41:05",{"id":191,"version":192,"summary_zh":193,"released_at":194},71610,"v1.8.0","## 新增内容\n\n### 新增 🎉\n\n- 添加了张量并行的支持。使用方法请参阅 `TransformerConfig` 类。\n- 从模型阶梯中添加了更多下游任务。\n- 添加了 `io.copy_dir()` 函数。\n- 添加了新的学习率调度器：`LinearWithWarmup`、`InvSqrtWithWarmup`、`ConstantWithWarmup` 和 `SequentialScheduler`。\n- 添加了在尝试加载检查点之前，从远程存储预下载检查点文件的选项。\n- 添加了用于发送 Slack 通知的回调函数。\n- 使 MPS 设备能够在 Apple Silicon 上正常工作。\n- 添加了 `SkipStepAdamW` 优化器。\n- 训练器现在可以加载仅包含模型权重的检查点。\n- 添加了每次只允许每个节点的一个进程上传检查点的限流选项。\n- 添加了在源混合数据集中以文本形式记录富表格对象的功能。\n- 在 `olmo_core.distributed.checkpoint` 模块中的 `unshard_checkpoint()` 函数中添加了 `unshard_strategy` 参数。\n- 在 `olmo_core.distributed.checkpoint` 模块中添加了 `load_keys()` 函数。\n\n### 变更 ⚠️\n\n- 将分片检查点中共享分片状态的存储方式由最小分片改为最低排名（通常为 0）。\n- 改变了训练器在提供 `load_path` 时处理检查点加载的方式。现在只有当 `save_folder` 中未找到检查点时，才会使用 `load_path`。\n\n### 修复 ✅\n\n- 添加了缺失的 `weights_only=False` 参数，以修复使用较新版本 PyTorch 加载训练检查点的问题。\n- 修复了 GCS 上传在临时失败时不重试的 bug。\n- 修复了源混合数据集会截断源文件而不是进行随机采样的问题。\n- 修复了源混合数据集中，从较小的 npy 文件中采样时，由于采样索引中没有实例而导致 mmap 异常的 bug。\n\n## 提交记录\n\n7899e7c (杂项) 准备发布 v1.8.0\n907b9c5 在发布时发送 Slack 通知 (#151)\n1ef7851 修复在 MPS 上再次训练时 `get_mock_batch()` 的问题\n29a468d 修复混合数据集类 (#147)\n98ccb67 移除 ganymede 集群\n205fe90 移除已删除的集群\n7ec9114 始终在 CPU 上生成模拟批次\n7122b1d 将最大步数保存到训练器状态中 (#143)\n9a78829 记录每次评估的耗时 (#149)\n075a36a 使在 MPS 设备上进行训练成为可能 (#131)\nb4a195b 向 `unshard_checkpoint` 函数添加更多选项，以帮助扩展规模 (#145)\n16885ab 修复带有前缀的合并列表\n7b755c9 对日志记录进行了小幅改进\n212108f 添加每次只允许每个节点的一个进程上传检查点的限流选项 (#142)\n7633461 从 32B 分支拉取修复 (#139)\n48abe8c 检查点紧急修复 (#140)\n0c096e2 训练器支持仅包含模型权重的检查点\n9818232 将发布脚本移至子文件夹 (#137)\n05ab673 更新集群列表 (#136)\n7ccf726 在发布时添加 PR 评论\n0ff19d7 更新引用信息\n7519e0a 更改 `load_path` 的处理方式 (#132)\n03a597a 限制发送到 Slack 的异常信息行数\nc634066 在 Slack 通知中包含 Beaker 作业链接\n3505660 使上下文管理器能够正确设置原始状态 (#126)\n9e0992b 添加用于发送 Slack 通知的回调函数 (#125)\n6d60464 修复\nee27348 将 OLMo\u002Fladder-1xC 中的评估更改同步到这里","2025-01-30T01:12:51",{"id":196,"version":197,"summary_zh":198,"released_at":199},71611,"v1.7.0","## 新增内容\n\n### 新增 🎉\n\n- 向 `olmo_core.distributed.checkpoint.load_model_and_optim_state()` 添加了 `key_mapping` 参数，用于加载键名不同的检查点。\n- 在训练器中添加了 `load_key_mapping` 字段，与上述新的 `key_mapping` 参数思路一致。\n- 实现了一个名为 `NormalizedTransformer` 的 nGPT 模型。\n- 添加了一个示例，展示如何将 HuggingFace Llama 3.2 检查点转换为 OLMo-core 所需的正确格式。\n- 增加了缩放 RoPE 嵌入的 API。\n- 增加了 `ModelLadder` API。\n\n### 变更 ⚠️\n\n- `Transformer` 模型的顶级子模块 `w_out` 和 `norm` 现在被封装在一个 `lm_head` 模块中。由于上述的 `load_key_mapping`，训练脚本仍能向后兼容旧的检查点。\n\n### 修复 ✅\n\n- （优化）将模型输入尺寸标记为动态，以便 `torch.compile()` 避免在评估或变长序列\u002F批量大小训练时重新编译。这似乎并未影响吞吐量。\n- 提升了 HTTPS 和 GCS I\u002FO 函数的鲁棒性。\n- 修复了一个错误：使用 DataMix.v3_small_ppl_validation 生成配置时，始终获取的是 dolma2 分词后的验证数据。\n\n## 提交记录\n\n62d2c9e（杂项）准备发布 v1.7.0\ncb77039 将模型阶梯标记为 Beta 特性\n08c8073 适配转换脚本以支持 OLMo2 模型 (#116)\n8e716b5 添加模型阶梯构建模块 (#114)\n1647f78 为 nGPT 添加更多测试 (#113)\n37e0e88 改进文档\nd68d47a 使 nn 配置更加灵活 (#112)\n0bcc840 RoPE 缩放，并说明如何转换 HuggingFace 检查点 (#111)\n7655a3b 在 ppl 验证文件清单中添加模板变量 (#110)\nca44cf4 实现 nGPT (#108)\nc47df7c 提升 IO 函数的鲁棒性 (#109)\n4f2c8ef 更新 README.md\n57b38ad 将模型输入标记为动态尺寸 (#105)\n776e235 移除重复脚本\n\n","2024-11-27T22:31:45",{"id":201,"version":202,"summary_zh":203,"released_at":204},71612,"v1.6.3","## 新增内容\n\n### 新增 🎉\n\n- 添加了 `olmo_core.distributed.checkpoint.get_checkpoint_metadata()` 函数。\n- （BETA）添加了编译优化器步骤的标志。目前仅在 AdamW 上进行了测试，可能不适用于其他优化器。\n\n### 修复 ✅\n\n- 旧的临时检查点不会在最新的临时检查点成功保存之前被删除。\n- 提升了 GCS 上传的稳定性。\n- 修复了在 Google Augusta 集群上的单节点训练问题。\n- `numpy.random.dirichlet()` 并不总是求和为 1.0，因此在验证领域权重时允许一定的小误差范围。\n\n## 提交记录\n\n9c52bea (杂项) 准备发布 v1.6.3\nad5e9e5 将 flash-attn 升级至 v2.7.0 (#104)\nb9e9193 [beta] 启用编译优化器步骤（已使用 AdamW 测试）(#103)\nfdbb76e 使用 allclose 比较小数字之和 (#102)\n3284742 提升 GCS 上传的稳健性 (#101)\n63b3f43 将 isort 的版本要求从 \u003C5.13,>=5.12 更新为 >=5.12,\u003C5.14 (#93)\ndcbd988 更新文档和主题版本\n6615ba9 将 actions\u002Fdownload-artifact 从 3 升级到 4 (#100)\n2e2b35b 添加获取检查点元数据的函数\nc0e47cc 清理 Dockerfile (#99)\n6300bc7 用日志记录表格替换打印表格 (#98)\ne522886 不再过早删除旧的临时检查点 (#97)\ndea10fd 将 actions\u002Fupload-artifact 从 3 升级到 4 (#90)\nc2fe2db 在缺少凭据时跳过另一项测试\n3ea9fa2 将 softprops\u002Faction-gh-release 从 1 升级到 2 (#87)\n5a5c17f 将 actions\u002Fcheckout 从 3 升级到 4 (#91)\n9c99b9c 在缺少相关凭据时跳过部分测试 (#96)\n53efa8c 将 actions\u002Fsetup-python 从 4 升级到 5 (#88)\nd548d3b 将 actions\u002Fcache 从 3 升级到 4 (#86)\nab80395 添加 dependabot 配置\n\n","2024-11-15T19:14:18",{"id":206,"version":207,"summary_zh":208,"released_at":209},71613,"v1.6.2","## What's new\n\n### Added 🎉\n\n- Added option to disable `GarbageCollectorCallback`, not that you'd want to do this usually, but I needed to run an experiment to show how important that callback is.\n\n### Fixed ✅\n\n- Fixed a bug where some default callbacks could be added twice if given a different name by the user.\n- Fixed a bug where some `Trainer` bookkeeping tasks may not complete before `.fit()` returns.\n\n## Commits\n\n2384472 (chore) prepare for release v1.6.2\nf721fa1 Ensure all bookkeeping tasks complete (#85)\n26a2c63 Some callback improvements (#84)\n\n","2024-11-08T18:29:21",{"id":211,"version":212,"summary_zh":213,"released_at":214},71614,"v1.6.1","## What's new\n\n### Added 🎉\n\n- Added `retries` field to `BeakerLaunchConfig`.\n- Allow running on Augusta cluster with existing train scripts.\n- Added `olmo_core.utils.logging_configured()` function to check if logging has been configured.\n\n### Fixed ✅\n\n- Fixed a potential distributed deadlock bug when training without a separate CPU-only bookkeeping backend.\n- Removed some unnecessary host-device syncs in `olmo_core.distributed.utils`.\n- Added `Trainer(Config).async_bookkeeping` field to toggle async bookkeeping.\n\n## Commits\n\ncae88f5 (chore) prepare for release v1.6.1\n83db5f7 Some fixes\u002Fimprovements around synchronous bookkeeping operations (#83)\nc435c94 increase timeout for CI checks\n4a56200 update cluster list (#82)\ne27ba74 Update throughput numbers, add `logging_configured()` util function (#81)\nbec0a3c Allow running on Augusta cluster (#80)\nc7c3a5a Set env vars for Augusta cluster\nb9351e2 Add `retries` field to `BeakerLaunchConfig` (#79)\n\n","2024-11-07T00:28:27",{"id":216,"version":217,"summary_zh":218,"released_at":219},71615,"v1.6.0","## What's new\n\n### Added 🎉\n\n- Added option to compile the trainer's loss function (`Trainer.compile_loss`).\n- Added `SourceMixtureDataset` for composing a training mixture based on ratios of source datasets.\n- Added `NumpyFSLDatasetMixture` for constructing a `NumpyDatasetBase` from a `SourceMixtureDataset`. Note this is only supported for FSL datasets.\n- Added tests for `SourceMixture*` and `NumpyFSLDatasetMixture`.\n- Added `DownstreamEvaluatorCallbackConfig` class for running in-loop downstream eval via [OLMo-in-loop-evals](https:\u002F\u002Fgithub.com\u002Fallenai\u002FOLMo-in-loop-evals).\n\n### Changed ⚠️\n\n- Moved some types into `olmo_core.data.types` to avoid some circular dependencies.\n\n### Fixed ✅\n\n- Made GCS client more robust by automatically retrying timeout errors for most operations.\n\n## Commits\n\n29e1276 (chore) prepare for release v1.6.0\nda39e97 Add note about optional dependencies\n81b1249 Missed _bust_index_cache in one spot (#78)\n00d34f6 Add option to compile loss function, move logits FP32 casting into loss function (#77)\n4928f82 Adds mixing loader for FSL datasets (#70)\necb0686 Allow stopping the experiment on keyboard int\n41400c4 Add Llama 8B config (#76)\n282c120 Update Docker build (#75)\n55d261e Make GCS client more robust (#74)\n3fe59b6 Add a callback for downstream evals, update Docker builds (#73)\necd523e include release chore commit in release notes\n\n","2024-11-01T21:51:40",{"id":221,"version":222,"summary_zh":223,"released_at":224},71616,"v1.5.0","## What's new\n\n### Added 🎉\n\n- Added Google Cloud support for `list_directory()` and `clear_directory()`.\n- Added `CometCallback` for logging training runs to Comet.ml.\n- Added `DataMixBase` class, to allow extending to new data mix groups.\n- Added support for MoE-based models.\n- Added method `DataLoaderBase.get_mock_batch()`.\n- Trainer now starts with a dry-run of a fake batch created by `DataLoaderBase.get_mock_batch()`.\n- Added `Callback.pre_backward()`, `.pre_eval_batch()`, and `.post_eval_batch()` methods.\n- Added `Trainer.model_forward()`, `.get_losses()`, and `.eval_batch()` methods.\n- Added a new `TransformerActivationCheckpointingMode`, \"selected_ops\" (requires torch 2.5 or newer).\n\n### Changed ⚠️\n\n- `BeakerLaunchConfig.setup_steps` should now include steps to clone your repo (which it will by default). This change allows support for private repos.\n\n### Fixed ✅\n\n- `prepare_cli_environment()` now calls `add_cached_path_clients()`.\n- Removed an unnecessary host-device sync.\n\n## Commits\n\n984eb26 Update README.md\n0f0d282 Update README.md\n310866e Add FP8 numbers for the 13B\n425f7db Add \"selected_ops\" transformer AC mode (#71)\nd90292e Move transformer config components to its own submodule\n4d3b231 Add support for MoE models with megablocks (#60)\n6e32043 Add Google Cloud support for more `io` functions (#69)\n5af60ba Avoid an unnecessary host-device sync when created initial loss tensors (#68)\nad4c8bb Switch to comet callback in official train scripts\nd90f5da Add comet API key to launch config\n0c75ef6 Do a dry-run batch before starting training (#67)\n71bc5c8 Add `save_state_dict` function\n9c25aed Update the Comet.ml callback (#66)\n6e4ee4e Add BaseDataMix class (#65)\n54a74c3 Add a Comet.ml trainer callback (#64)\n9ba0e63 Update base image with newer torch and flash-attn versions (#63)\n97172fc avoid omegaconf interpolation in setup steps\n48892ee include clone commands in setup steps (#62)\n\n","2024-10-23T17:36:31",{"id":226,"version":227,"summary_zh":228,"released_at":229},71617,"v1.4.0","## What's new\n\n### Changed ⚠️\n\n- Updated default layer norm epsilon for OLMo models from `1e-5` to `1e-6` to match latest model.\n- Renamed `FSLDataLoader` to `NumpyFSLDataLoader`.\n- Renamed `VSLDataLoader` to `NumpyVSLDataLoader`.\n- The trainer now takes a `data_loader: DataLoaderBase` instead of a `dataset: NumpyDatasetBase`.\n\n## Commits\n\n55343dd fix loading training state dict\nb921299 Allow unknown number of batches with data loaders\n87f1e89 fix restarts for custom data loader\n767c550 Add example of custom data loader\n6237f7d Trainer now takes a data loader instead of a dataset (#59)\nf6fc369 update default LN eps to match latest OLMo model (#58)\ndb522d1 allow loading via pickling\n7d26589 make VSL curr config more flexible\n\n","2024-10-02T18:22:29",{"id":231,"version":232,"summary_zh":233,"released_at":234},71618,"v1.3.2","## What's new\n\n### Added 🎉\n\n- Added `Config.validate()`, `Config.replace()`, and `Config.apply()` methods.\n- Trainer now records sequence length as a metric.\n\n### Fixed ✅\n\n- Ensure additional cached-path clients are added in the process pool workers from some dataset preparation methods.\n- Fixed `label_mask` tensor created by `NumpyPaddedFSLDataset`.\n- Removed redundant warning messages about CUDA alloc retries.\n- Fixed non-deterministic deadlock bug with async checkpointing.\n\n## Commits\n\na0a680d keep old beaker images instead of deleting them\n25a71f4 Minor training improvements (#57)\nf32d0bf Improve formatting of throughput table in readme (#56)\nf7f3709 Add some more `Config` methods\n916ecf9 Fix label mask tensor created by `NumpyPaddedFSLDataset` (#55)\nb29838a Ensure additional scheme clients are added in worker procs\n\n","2024-09-27T22:19:17",{"id":236,"version":237,"summary_zh":238,"released_at":239},71619,"v1.3.1","## What's new\n\n### Fixed ✅\n\n- Fixed the name given to evaluator metrics logged.\n\n## Commits\n\n40057ff fix eval metric name\n\n","2024-09-26T18:33:54",{"id":241,"version":242,"summary_zh":243,"released_at":244},71620,"v1.3.0","## What's new\n\n### Added 🎉\n\n- Added `torchao` to the Docker\u002FBeaker images.\n- Added support for `torchao` `float8` training via the `Float8HandlerCallback`.\n- Added `Callback.post_attach()` method.\n\n## Commits\n\n8c03ca8 Add support for float8 training via torchao (#54)\n2f253f8 Minor updates to precision settings for official configs, add torchao to Docker\u002FBeaker image (#53)\n7e3ddd4 increase batch size for 13B\n\n","2024-09-26T16:05:53",{"id":246,"version":247,"summary_zh":248,"released_at":249},71621,"v1.2.0","## What's new\n\n### Added 🎉\n\n- Added support for wildcards in `OptimGroupOverride.params`.\n- Added `NumpyPaddedFSLDataset` variant.\n- Added `Evaluator` class and `EvaluatorCallback` for in-loop evals.\n- Added `v3-small-ppl-validation` data mix.\n\n### Fixed ✅\n\n- Fixed bug with data loader when using threading.\n\n## Commits\n\n346d7d1 Merge more internal config components\n6b156c2 Add v3-small-ppl-validation mix (#52)\n10a6ff0 add citation info\nb131376 Add in-loop evals (#51)\nb81d670 Use Beaker image ID instead of full name\n497b756 Add support for wildcards in `OptimGroupOverride.params` (#50)\n\n","2024-09-25T17:28:26",{"id":251,"version":252,"summary_zh":253,"released_at":254},71622,"v1.1.0","## What's new\n\n### Added 🎉\n\n- Added support for changing train sequence length when loading a checkpoint.\n- Added support for sequence length warm-up during training via the callback `SequenceLengthSchedulerCallback`.\n- Added support for variable sequence length (VSL) datasets and VSL curriculums as introduced in [\"Dataset Decomposition: Faster LLM Training with Variable Sequence Length Curriculum\"](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2405.13226).\n- Added `Lion` and `SkipStepLion` optimizers.\n- Added `init_seed` argument to `Transformer` and `TransformerConfig`.\n\n### Changed ⚠️\n\n- Renamed `MemMapDataset` to `NumpyFSLDataset`.\n- Batch size is now specified in tokens, not instances.\n\n## Commits\n\n3aa7a1b Allow configuring model init seed, make iterable dataset classes into data loaders (#49)\nbf48f80 Big changes to dataset API, adds support for variable sequence length training (#48)\n3f4bbd3 update configs for latest architecture (#47)\necfd2d0 Ensure speed monitor can handle variable sequence length (#46)\n12c629a Add a callback for sequence length warm-up scheduling (#45)\n603952b Clean up optimizer API (#44)\n5036d90 Add Lion optimizer and a \"skip step\" version of it (#43)\n50857c4 split up optim module\ncef56ea Rename `MemMapDataset` to `NumpyDataset` (#42)\n6c0ccf3 Add support for sequence length warm-up (#41)\n4b65602 minor clean up of distributed utils\n\n","2024-09-18T22:50:20"]