visualnav-transformer
visualnav-transformer 是伯克利人工智能研究实验室开源的移动机器人基础模型套件,核心包含 GNM、ViNT 和 NoMaD 三大模型。它旨在解决传统机器人导航策略泛化能力弱、难以跨机型复用的痛点。通过在海量的跨形态机器人数据上进行训练,visualnav-transformer 能够作为通用的“视觉导航大脑”,让机器人在无需额外训练(零样本)的情况下,仅凭摄像头画面即可理解环境并导航至指定目标。
该项目最大的技术亮点在于其强大的迁移能力:不仅支持直接控制多种不同构型的机器人,还允许开发者利用少量新数据进行高效微调,快速适配特定任务或全新硬件。此外,NoMaD 模型创新性地引入了目标掩码扩散策略,显著提升了机器人在复杂未知环境中的探索效率。
visualnav-transformer 主要面向机器人领域的研究人员与开发者。仓库提供了完整的训练脚本、数据处理工具以及在 TurtleBot 等主流平台上的部署示例,帮助用户轻松复现前沿论文成果,或基于此构建自定义的自主导航系统。无论是希望验证新算法的学者,还是致力于开发通用移动机器人的工程师,都能从中获得强有力的支持。
使用场景
某物流仓储团队正试图让一台新采购的轮式机器人,在未经过专门地图构建和长时间训练的仓库环境中,自主导航至指定货架取货。
没有 visualnav-transformer 时
- 开发周期漫长:工程师必须为这台新机器人采集数千条专属轨迹数据,并从头训练导航策略,耗时数周才能上线。
- 泛化能力极差:一旦仓库灯光变化或地面材质不同,原本训练好的模型就会失效,需要重新调整参数甚至返工。
- 多机型适配困难:若后续引入不同底盘结构的机器人,整个感知与控制代码需大幅重构,无法复用已有成果。
- 零样本任务不可行:机器人完全无法在未见过的新区域直接执行“去某地”的指令,必须先由人工遥控建图。
使用 visualnav-transformer 后
- 实现零样本部署:利用预训练的 GNM 或 ViNT 模型,机器人无需任何额外训练,即可直接在陌生仓库中理解视觉指令并导航。
- 跨场景鲁棒性强:得益于多样化的跨机体训练数据,模型能自适应不同的光照、地面纹理及动态障碍物干扰。
- 高效迁移适配:仅需少量新机器人的演示数据(ROS bag),通过
train.py脚本微调,即可快速将通用策略迁移到新硬件上。 - 拓扑地图自动构建:通过
create_topomap.sh脚本,机器人可基于单次演示轨迹自动生成导航用的拓扑图,大幅降低部署门槛。
visualnav-transformer 将移动机器人的导航开发从“定制化手工打造”转变为“通用模型即插即用”,显著降低了多场景、多机型的落地成本。
运行环境要求
- Linux (Ubuntu 18.04
- 20.04)
需要 NVIDIA GPU,支持 CUDA 10+,具体显存大小未说明
未说明

快速开始
通用导航模型:GNM、ViNT 和 NoMaD
贡献者: Dhruv Shah, Ajay Sridhar, Nitish Dashora, Catherine Glossop, Kyle Stachowicz, Arjun Bhorkar, Kevin Black, Noriaki Hirose, Sergey Levine
伯克利人工智能研究组
通用导航模型是一类通用的目标条件视觉导航策略,它们基于多样化的跨机器人平台训练数据进行训练,能够在零样本条件下控制多种不同的机器人。此外,这些模型还可以高效地进行微调或适配,以应对新的机器人和下游任务。我们的一系列模型已在以下研究论文中有所介绍(且仍在不断扩展):
- GNM:一种可驱动任意机器人的通用导航模型(2022年10月,于ICRA 2023会议上发表)
- ViNT:用于视觉导航的基础模型(2023年6月,于CoRL 2023会议上发表)
- NoMaD:用于导航与探索的目标掩码扩散策略(2023年10月)
概述
本仓库包含使用您自己的数据训练我们系列模型的代码、预训练模型检查点,以及在TurtleBot2/LoCoBot机器人上部署这些模型的示例代码。该仓库的组织结构沿用了GNM的设计。
./train/train.py:用于在您的自定义数据上训练或微调ViNT模型的训练脚本。./train/vint_train/models/:包含GNM、ViNT及一些基线模型的文件。./train/process_*.py:用于将rosbag或其他格式的机器人轨迹处理为训练数据的脚本。./deployment/src/record_bag.sh:用于在目标环境中收集演示轨迹并将其保存为ROS bag文件的脚本。该轨迹会被下采样以生成环境的拓扑图。./deployment/src/create_topomap.sh:用于将演示轨迹的ROS bag文件转换为机器人可用于导航的拓扑图的脚本。./deployment/src/navigate.sh:用于在机器人上部署训练好的GNM/ViNT/NoMaD模型,使其根据生成的拓扑图导航到指定目标的脚本。请参阅下方的相关部分以了解配置设置。./deployment/src/explore.sh:用于在机器人上部署训练好的NoMaD模型,使其随机探索周围环境的脚本。请参阅下方的相关部分以了解配置设置。
训练
此子文件夹包含处理数据集以及使用您自己的数据训练模型的代码。
前置条件
该代码库假设您拥有一台运行Ubuntu系统的工作站(已测试过18.04和20.04版本),Python 3.7及以上版本,以及配备CUDA 10+的GPU。此外,还假设有conda环境,但您可以对其进行修改以适应其他虚拟环境工具或原生安装方式。
设置
请在vint_release/(最顶层)目录下执行以下命令:
- 创建conda环境:
conda env create -f train/train_environment.yml - 激活conda环境:
conda activate vint_train - 安装vint_train相关包:
pip install -e train/ - 从这个仓库安装
diffusion_policy包:git clone git@github.com:real-stanford/diffusion_policy.git pip install -e diffusion_policy/
数据处理
在我们的论文中,我们结合了公开可用和未公开的数据集进行训练。以下是用于训练的公开数据集列表;如需访问未公开的数据,请联系相应作者。
我们建议您下载这些(以及您可能希望用于训练的其他数据集)并按照以下步骤进行数据处理。
数据处理
我们提供了一些示例脚本,用于直接从rosbag或自定义格式(如HDF5)处理这些数据集:
- 使用相关参数运行
process_bags.py,或运行process_recon.py来处理RECON的HDF5文件。您也可以按照我们下面的结构手动添加自己的数据集(如果您要添加自定义数据集,请参阅自定义数据集部分)。 - 在您的数据集文件夹中使用相关参数运行
data_split.py。
完成第一步数据处理后,处理后的数据集应具有如下结构:
├── <dataset_name>
│ ├── <name_of_traj1>
│ │ ├── 0.jpg
│ │ ├── 1.jpg
│ │ ├── ...
│ │ ├── T_1.jpg
│ │ └── traj_data.pkl
│ ├── <name_of_traj2>
│ │ ├── 0.jpg
│ │ ├── 1.jpg
│ │ ├── ...
│ │ ├── T_2.jpg
│ │ └── traj_data.pkl
│ ...
└── └── <name_of_trajN>
├── 0.jpg
├── 1.jpg
├── ...
├── T_N.jpg
└── traj_data.pkl
每个*.jpg文件都包含机器人前方的RGB观测图像,并按时间顺序进行了标记。traj_data.pkl文件则存储了该轨迹的里程计数据,它是一个包含以下键的pickle字典:
"position":一个形状为[T, 2]的np.ndarray,记录了机器人在每张图像观测时刻的xy坐标。"yaw":一个形状为[T,]的np.ndarray,记录了机器人在每张图像观测时刻的偏航角。
完成第二步数据处理后,处理后的数据分割应在vint_release/train/vint_train/data/data_splits/目录下呈现如下结构:
├── <dataset_name>
│ ├── train
| | └── traj_names.txt
└── └── test
└── traj_names.txt
训练你的通用导航模型
在 vint_release/train 目录下运行以下命令:
python train.py -c <训练配置文件路径>
预先准备好的配置 YAML 文件位于 train/config 目录中。
自定义配置文件
你可以以其中一个预设的 YAML 文件为起点,根据需要修改其中的参数。config/vint.yaml 是一个不错的选择,因为它包含了注释说明。而 config/defaults.yaml 则包含了默认的配置值(请勿直接使用此配置文件进行训练,因为它未指定任何用于训练的数据集)。
自定义数据集
确保你的数据集和数据划分目录遵循【数据处理】部分中提供的结构。找到 train/vint_train/data/data_config.yaml 文件,并添加以下内容:
<数据集名称>:
metric_waypoints_distance: <该数据集中航点之间的平均距离(米)>
然后找到你的训练配置文件,在 datasets 参数下添加以下内容(你可以根据需要调整 end_slack、goals_per_obs 和 negative_mining 的值):
<数据集名称>:
data_folder: <数据集路径>
train: data/data_splits/<数据集名称>/train/
test: data/data_splits/<数据集名称>/test/
end_slack: 0 # 从每条轨迹末尾截取的时间步数(以防许多轨迹因碰撞而终止)
goals_per_obs: 1 # 每次观测采样的目标数量
negative_mining: True # 来自 ViNG 论文中的负样本挖掘方法(Shah 等人)
从检查点继续训练模型
你也可以不从头开始训练,而是加载已发布的成果中的现有检查点。在 vint_release/train/config/ 目录下的 YAML 配置文件中添加 load_run: <项目名称>/<日志运行名称>。要加载的 .pth 文件应保存在以下目录结构中,并重命名为“latest”:vint_release/train/logs/<项目名称>/<日志运行名称>/latest.pth。这样可以方便地从先前运行的检查点继续训练,因为日志默认就是按这种方式保存的。注意:如果你是从之前的运行中加载检查点,请先在 vint_release/train/logs/<项目名称>/ 中确认运行名称,因为代码会在每个运行的配置 YAML 文件中指定的运行名称后附加日期字符串,以避免运行名称重复。
如果你想使用我们的检查点,可以从这个链接下载 .pth 文件。
部署
本子文件夹包含用于加载预训练的 ViNT 并将其部署到开源 LoCoBot 室内机器人平台上的代码,该平台搭载了 NVIDIA Jetson Orin Nano。该软件可以轻松适配到其他机器人上,研究人员已成功将其独立部署到以下机器人及仿真环境中:Clearpath Jackal、DJI Tello、Unitree A1、TurtleBot2、Vizbot,以及 CARLA 等仿真环境。
LoCoBot 设置
本软件已在运行 Ubuntu 20.04 的 LoCoBot 上进行了测试。
软件安装(按顺序)
- ROS:ros-noetic
- ROS 软件包:
sudo apt-get install ros-noetic-usb-cam ros-noetic-joy - kobuki
- Conda
- 安装 Anaconda、Miniconda 等工具来管理环境
- 使用 environment.yml 创建 Conda 环境(在
vint_release/目录下执行)conda env create -f deployment/deployment_environment.yaml - 激活环境
conda activate vint_deployment - (推荐)将以下内容添加到
~/.bashrc:echo “conda activate vint_deployment” >> ~/.bashrc
- 安装
vint_train软件包(在vint_release/目录下执行):pip install -e train/ - 从该 仓库 安装
diffusion_policy包:git clone git@github.com:real-stanford/diffusion_policy.git pip install -e diffusion_policy/ - (推荐)如果尚未安装,可安装 tmux。许多 Bash 脚本依赖 tmux 启动多个终端窗口并分别运行不同命令。这将有助于调试,因为你可以在每个窗口中查看输出。
硬件要求
- LoCoBot:http://locobot.org(仅导航栈)
- 广角 RGB 摄像头:示例。
vint_locobot.launch文件使用的摄像头参数适用于类似 ELP 广角鱼眼镜头的设备,你可以根据自己的摄像头进行相应调整。请根据你的摄像头情况,在vint_release/deployment/config/camera.yaml中调整摄像头参数(用于可视化)。 - 可与 Linux 兼容的 操纵杆/键盘遥控。将操纵杆上的“死人开关”按键映射添加到
vint_release/deployment/config/joystick.yaml文件中。常见操纵杆的按键与索引对应关系可在 ROS 维基 中找到。
加载模型权重
将模型权重 .pth 文件保存到 vint_release/deployment/model_weights 文件夹中。我们模型的权重可在此链接获取。
收集拓扑地图
请确保在 vint_release/deployment/src/ 目录下运行这些脚本。
本节介绍一种简单的方法,用于为目标部署环境创建拓扑地图。为简化起见,我们将机器人置于“路径跟踪”模式:即给定环境中的一条轨迹,任务是沿着该轨迹到达目标。环境可能会出现新的或动态变化的障碍物、光照条件变化等情况。
录制 rosbag:
./record_bag.sh <bag_name>
运行此命令以使用操纵杆和摄像头遥控机器人。该命令会打开三个窗口:
roslaunch vint_locobot.launch:此启动文件会启动摄像头的usb_cam节点、操纵杆的joy节点以及机器人移动基座的相关节点。python joy_teleop.py:此 Python 脚本会启动一个节点,从joy主题读取输入,并将其输出到用于遥控机器人基座的主题上。rosbag record /usb_cam/image_raw -o <bag_name>:此命令不会立即执行(需要按 Enter 键)。它将在vint_release/deployment/topomaps/bags目录中运行,我们建议将 rosbag 文件存储在此目录中。
准备好录制 bag 后,运行 rosbag record 命令,并在希望机器人遵循的地图上遥控机器人。完成路径录制后,终止 rosbag record 命令,然后关闭 tmux 会话。
生成拓扑地图:
./create_topomap.sh <topomap_name> <bag_filename>
此命令会打开 3 个窗口:
roscorepython create_topomap.py —dt 1 —dir <topomap_dir>:此命令会在/vint_release/deployment/topomaps/images中创建一个目录,并在播放 bag 的每一秒保存一张图像作为地图中的一个节点。rosbag play -r 1.5 <bag_filename>:此命令以 5 倍速播放 rosbag,因此 Python 脚本实际上是以 1.5 秒的间隔记录节点。<bag_filename>应该是包含 .bag 扩展名的完整 bag 文件名。您可以在make_topomap.sh文件中更改此值。该命令不会运行,直到您按下 Enter 键,而您应该仅在 Python 脚本发出等待消息后才按下 Enter 键。开始播放 bag 后,请切换到运行 Python 脚本的屏幕,以便在 rosbag 播放结束后终止该脚本。
当 bag 播放结束时,终止 tmux 会话。
运行模型
导航
请确保在 vint_release/deployment/src/ 目录下运行此脚本。
./navigate.sh “--model <model_name> --dir <topomap_dir>”
为了部署已发表结果中的模型,我们发布了模型检查点,您可以从此链接下载。
<model_name> 是 vint_release/deployment/config/models.yaml 文件中模型的名称。在此文件中,您需要为每个模型指定以下参数(默认值):
config_path(str):用于训练模型的位于vint_release/train/config/中的 *.yaml 文件路径。ckpt_path(str):位于vint_release/deployment/model_weights/中的 *.pth 文件路径。
请确保这些配置与您训练模型时使用的配置一致。我们提供的权重对应的模型配置已在 yaml 文件中列出,供您参考。
<topomap_dir> 是 vint_release/deployment/topomaps/images 中的目录名称,其中包含与拓扑地图节点相对应的图像。这些图像按名称从 0 到 N 排序。
此命令会打开 4 个窗口:
roslaunch vint_locobot.launch:此启动文件会开启摄像头的 usb_cam 节点、操纵杆的 joy 节点以及机器人移动基座的多个节点。python navigate.py --model <model_name> -—dir <topomap_dir>:此 Python 脚本会启动一个节点,从/usb_cam/image_raw主题读取图像观测,将观测和地图输入模型,并发布动作到/waypoint主题。python joy_teleop.py:此 Python 脚本会启动一个节点,从 joy 主题读取输入,并将其输出到用于遥控机器人基座的主题上。python pd_controller.py:此 Python 脚本会启动一个节点,从/waypoint主题读取消息(来自模型的航路点),并输出速度指令以控制机器人基座的运动。
当机器人完成导航时,终止 pd_controller.py 脚本,然后终止 tmux 会话。如果您想在机器人导航过程中接管控制,可以使用 joy_teleop.py 脚本通过操纵杆进行操作。
探索
请确保在 vint_release/deployment/src/ 目录下运行此脚本。
./exploration.sh “--model <model_name>”
为了部署已发表结果中的模型,我们发布了模型检查点,您可以从此链接下载。
<model_name> 是 vint_release/deployment/config/models.yaml 文件中模型的名称(请注意,只有 NoMaD 可用于探索)。在此文件中,您需要为每个模型指定以下参数(默认值):
config_path(str):用于训练模型的位于vint_release/train/config/中的 *.yaml 文件路径。ckpt_path(str):位于vint_release/deployment/model_weights/中的 *.pth 文件路径。
请确保这些配置与您训练模型时使用的配置一致。我们提供的权重对应的模型配置已在 yaml 文件中列出,供您参考。
<topomap_dir> 是 vint_release/deployment/topomaps/images 中的目录名称,其中包含与拓扑地图节点相对应的图像。这些图像按名称从 0 到 N 排序。
此命令会打开 4 个窗口:
roslaunch vint_locobot.launch:此启动文件会开启摄像头的 usb_cam 节点、操纵杆的 joy 节点以及机器人移动基座的多个节点。python explore.py --model <model_name>:此 Python 脚本会启动一个节点,从/usb_cam/image_raw主题读取图像观测,将观测和地图输入模型,并发布探索行动到/waypoint主题。python joy_teleop.py:此 Python 脚本会启动一个节点,从 joy 主题读取输入,并将其输出到用于遥控机器人基座的主题上。python pd_controller.py:此 Python 脚本会启动一个节点,从/waypoint主题读取消息(来自模型的航路点),并输出速度指令以控制机器人基座的运动。
当机器人完成导航时,终止 pd_controller.py 脚本,然后终止 tmux 会话。如果您想在机器人导航过程中接管控制,可以使用 joy_teleop.py 脚本通过操纵杆进行操作。
将此代码适配到不同机器人
我们希望这个代码库足够通用,以便您可以将其部署到您喜爱的基于 ROS 的机器人上。您可以在 vint_release/deployment/config/robot.yaml 中修改机器人配置参数,例如机器人的最大角速度和线速度,以及用于遥控和控制机器人的发布话题。如果您有任何问题或建议,欢迎随时创建 GitHub 问题,或通过 shah@cs.berkeley.edu 联系作者。
引用
@inproceedings{shah2022gnm,
author = {Dhruv Shah 和 Ajay Sridhar 和 Arjun Bhorkar 和 Noriaki Hirose 和 Sergey Levine},
title = {{GNM:一种可驱动任意机器人的通用导航模型}},
booktitle = {国际机器人与自动化会议(ICRA)},
year = {2023},
url = {https://arxiv.org/abs/2210.03370}
}
@inproceedings{shah2023vint,
title = {Vi{NT}:视觉导航的基础模型},
author = {Dhruv Shah 和 Ajay Sridhar 和 Nitish Dashora 和 Kyle Stachowicz 和 Kevin Black 和 Noriaki Hirose 和 Sergey Levine},
booktitle = {第七届机器人学习年度会议},
year = {2023},
url = {https://arxiv.org/abs/2306.14846}
}
@article{sridhar2023nomad,
author = {Ajay Sridhar 和 Dhruv Shah 和 Catherine Glossop 和 Sergey Levine},
title = {{NoMaD:用于导航与探索的目标掩码扩散策略}},
journal = {arXiv 预印本},
year = {2023},
url = {https://arxiv.org/abs/2310.xxxx}
}
版本历史
code_release2023/10/06常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备