能力标签
🛠
AI工具

Nano AI

基于 C · 开源免费,本地部署,数据完全自主可控
英文名:Nano
⭐ 288 Stars 🍴 13 Forks 💻 C 📄 未公布协议 🏷 AI 8.0分
8.0AI 综合评分
aigptllmllm-inferencellm-training
✦ AI Skill Hub 推荐

经 AI Skill Hub 精选评估,Nano AI 获评「强烈推荐」。这款AI工具在功能完整性、社区活跃度和易用性方面表现出色,AI 评分 8.0 分,适合有一定技术背景的用户使用。

📚 深度解析
Nano AI 是一款基于 C 的开源工具,在 GitHub 上收获 0k+ Star,是ai、gpt、llm、llm-inference领域中的优质开源项目。开源工具的最大优势在于代码完全透明,你可以审计每一行代码的安全性,也可以根据自身需求进行二次开发和定制。

**为什么要使用开源工具而非商业 SaaS?**
对于个人开发者和有隐私需求的用户,本地部署的开源工具意味着数据不离本机,不受第三方服务商的数据政策约束。同时,开源工具通常没有使用次数限制和月度费用,一次安装即可长期使用,对于高频使用场景的总拥有成本(TCO)远低于订阅制商业工具。

**安装与环境准备**
Nano AI 依赖 C 运行环境。建议通过 pyenv(Python)或 nvm(Node.js)管理 C 版本,避免全局环境污染。对于新手用户,推荐先创建虚拟环境(python -m venv venv && source venv/bin/activate),再安装依赖,这样即使出现问题也可以随时删除虚拟环境重新开始,不影响系统稳定性。

**社区与维护**
GitHub Issue 和 Discussion 是获取帮助的最快渠道。在提问前建议先检查 Closed Issues(已关闭的问题),大多数常见问题都已有解答。遇到 Bug 时,提供 pip list 的输出、完整错误堆栈和最小可复现示例,能显著提高开发者响应速度。AI Skill Hub 将持续追踪 Nano AI 的版本更新,及时通知重要功能变化。
📋 工具概览

Nano AI 是一款基于 C 开发的开源工具,专注于 ai、gpt、llm 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。

GitHub Stars
⭐ 288
开发语言
C
支持平台
Windows / macOS / Linux
维护状态
轻量级项目,按需更新
开源协议
未公布
AI 综合评分
8.0 分
工具类型
AI工具
Forks
13
📖 中文文档
以下内容由 AI Skill Hub 根据项目信息自动整理,如需查看完整原始文档请访问底部「原始来源」。

Nano AI 是一款基于 C 开发的开源工具,专注于 ai、gpt、llm 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。

📌 核心特色
  • 开源免费,支持本地部署,数据完全自主可控
  • 活跃的 GitHub 开源社区,持续迭代更新
  • 提供详细文档和使用示例,新手友好
  • 支持自定义配置,灵活适配不同使用环境
  • 可作为基础组件集成进现有技术栈或进行二次开发
🎯 主要使用场景
  • 本地部署运行,保护数据隐私,满足合规要求
  • 自定义集成到现有系统,扩展技术栈能力
  • 作为开源基础组件进行商业化二次开发
以下安装命令基于项目开发语言和类型自动生成,实际以官方 README 为准。
安装命令
# 克隆仓库
git clone https://github.com/bd4sur/Nano
cd Nano

# 查看安装说明
cat README.md

# 按 README 完成环境依赖安装后即可使用
📋 安装步骤说明
  1. 访问 GitHub 仓库页面
  2. 按照 README 文档完成依赖安装
  3. 根据系统环境完成初始化配置
  4. 参考官方示例或文档开始使用
  5. 遇到问题可在 GitHub Issues 中查找解答
以下用法示例由 AI Skill Hub 整理,涵盖最常见的使用场景。
常用命令 / 代码示例
# 查看帮助
nano --help

# 基本运行
nano [options] <input>

# 详细使用说明请查阅文档
# https://github.com/bd4sur/Nano
以下配置示例基于典型使用场景生成,具体参数请参照官方文档调整。
配置示例
# nano 配置说明
# 查看配置选项
nano --config-example > config.yml

# 常见配置项
# output_dir: ./output
# log_level: info
# workers: 4

# 环境变量(覆盖配置文件)
export NANO_CONFIG="/path/to/config.yml"
📑 README 深度解析 真实文档 完整度 34/100 查看 GitHub 原文 →
以下内容由系统直接从 GitHub README 解析整理,保留代码块、表格与列表结构。

Nano - Cyber Parrot

B站视频演示

<a href="https://www.bilibili.com/video/BV1SjajztELH" target="_blank"><img src="./doc/nano-rpi-2.jpg" width="100%"><br>树莓派语音对话离线部署</a><a href="https://www.bilibili.com/video/BV1rNgCzNE84" target="_blank"><img src="./doc/nano-scheme.jpg" width="100%"><br>基于自制Scheme解释器的推理</a><a href="https://www.bilibili.com/video/BV1mhVzzrEJf" target="_blank"><img src="./doc/nano-video-marga.jpg" width="100%"><br>路由器离线部署</a>
<a href="https://www.bilibili.com/video/BV1Q8qjB4ErP" target="_blank"><img src="./doc/nano-esp32-cluster.png" width="100%"><br>ESP32单片机集群推理</a><a href="https://www.bilibili.com/video/BV1vmrsYGERP" target="_blank"><img src="./doc/nano-video-ar-class-c.jpg" width="100%"><br>通过业余无线电C证考试</a><a href="https://www.bilibili.com/video/BV1vPRDYyEgp" target="_blank"><img src="./doc/nano-mi-ax5.jpg" width="100%"><br>红米AX5路由器部署推理</a>

技术要点简述

1. 安装依赖

conda create -n nano python=3.10
conda activate nano
python -m pip install -r requirements.txt

模型和数据

模型说明领域监督微调模型LoRA插件
[Nano-Pico](https://huggingface.co/bd4sur/Nano-Pico)用于验证极低资源推理部署的极小规模模型无规划无规划
[Nano-56M](https://huggingface.co/bd4sur/Nano-56M)56M参数,包括基础模型和通用问答模型无规划无规划
[Nano-168M](https://huggingface.co/bd4sur/Nano-168M)168M参数,包括基础模型和通用问答模型[业余无线电操作证考试](https://huggingface.co/bd4sur/Nano-168M/resolve/main/nano_168m_625000_sft_875000_amateur_radio_890000.bin)暂无公开插件

其中各尺寸模型的参数如下(在config/model.json中设置):

ModelNano-168MNano-56MNano-10MPsycho-1MPsycho-230kQwen3-0.6B
block_size51251251251251240960
vocab_size1638416384819240964096151936
n_layer24161216828
n_embd76851224064321024
head_dim48322088128
n_head1616128416
n_kv_head884428
n_hidden20481408720192963072
#tokens@PT25.6G10.1G1.0G1.0M1.0M/
#QAs@SFT12M2M1MN/AN/A/

公开数据集:

  • 预训练数据(7z压缩包,解压口令“nano”):Nano-PT-10G

适配Nano推理引擎的Qwen2.5/Qwen3模型:bd4sur/Qwen3

探索去噪生成的试验性模型:Nano-Denoise

4. 模型转换

模型转换的目的,是将Torch训练出的模型检查点(扩展名为pt)转换为端侧推理所需的模型文件(扩展名为bin),以及对模型进行量化、压缩,以缩减模型尺寸,便于分发、部署、推理加速。

Nano模型转换,执行以下命令:

python export.py model.bin [--checkpoint | --quant | --lora] checkpoint.pt

Qwen2/Qwen3模型转换,执行以下命令:

python infer_marga/tools/export_qwen.py qwen3-0b6.bin --hf /home/bd4sur/ai/_model/Qwen3/Qwen3-0.6B

python infer_marga/tools/export_qwen.py qwen3-1b7.bin --hf /home/bd4sur/ai/_model/Qwen3/Qwen3-1.7B

模型文件的格式参考了karpathy/llama2.c,但是有不同之处。描述如下:

model_file
  ├─header             (u32*64=256B定长)
  │   ├─magic_number_0 (u32=4B) = 0x42443453
  │   ├─magic_number_1 (u32=4B) = 0x55524c4d
  │   ├─major_version  (u32=4B)
  │   ├─minor_version  (u32=4B)
  │   ├─model_type     (u32=4B)
  │   ├─config_length  (u32=4B)
  │   ├─model_config   (u32*config_length)
  │   ├─quant_config   (u32*x) 量化相关参数,详见`export.py`中的实现
  │   ╰─padding        (u8填充到256B)
  ├─tokenizer_config   (不定长) 其详细定义见`export.py`中的注释,LoRA模块无此字段
  ╰─model_params       (不定长) 其详细定义见`export.py`中的实现

Transformer模型结构

Nano是基于Transformer编码器结构的语言模型,可解决自回归生成、去噪生成或序列到序列生成等多种任务。默认配置为因果自注意力编码器结构的自回归语言模型,如下图所示。

  • 模型结构以Llama2和GPT(karpathy/nanoGPT)为主要参考。
  • 使用旋转位置编码RoPE和前置均方根标准化RMSNorm。
  • 使用分组查询注意力(GQA)。
  • 使用SwiGLU,参考文献
  • 可选择因果自注意力或全局自注意力,前者用于语言模型,后者用于在其他任务上的探索。
  • 词元编码层与输出层共享权重。参考文献
  • 支持KV-Cache。
  • 支持插件化的低秩适配(LoRA)训练和推理。

模型结构参数model.json

参数类型默认值说明
block_sizeint512上下文(窗口)长度
vocab_sizeint8192词表长度
n_layerint4模型深度:即Transformer模型层数
n_embdint256模型宽度:内部表示向量的维度
n_headint4Q注意力头数
n_kv_headint4KV注意力头数
head_dimint4每个注意力头的维度,**未必**等于Q注意力头的维度
n_hiddenint4FFN隐藏层维度,一般是模型宽度的3倍
dropoutfloat0.0随机丢弃层的丢弃概率,仅训练时使用,预训练时设为0
use_ropeboolTrue使用RoPE位置编码?反之使用训练位置编码
norm_epsfloat1e-5均方根标准化参数,一般不动
is_causalboolTrue因果注意力?自回归为True,去噪或序列到序列为False

一般而言,对于小规模模型,在保证宽度(n_embd)的前提下,尽量加大深度(n_layer)。

词元编码

  • Nano使用简单的启发式词元编码,也就是给某个字符集中的独立字符、以及某个人工指定的词表中的每个词条,赋予唯一整数编号,作为词元编号。词元编码的输入是unicode码点序列(而非BPE的字节序列),输出是词元编码的序列。
  • 为了提升英文编码效率,在词表中手工添加了部分英文单词。
  • 词元编码器采用Trie树+最大前向匹配算法进行分词。
  • 仓库中同时包含了tiktoken提供的一个BPE词元编码算法,由于速度很慢,并不实用,因此仅作为参照,并不实际使用。之所以不使用BPE等词元编码工具,例如tiktoken、Tokenizers等,一方面是为了最小化外部依赖,另一方面也是想探索不含(高效)词元编码的语言模型效果如何。

模型训练参数

  • from_checkpoint: str:从哪个检查点继续训练。其值是绝对路径。说明:训练选项中涉及的所有路径,都是绝对路径
  • save_checkpoint_to: str:检查点保存位置的绝对路径。其值必须是目录。默认值为仓库根目录下checkpoint/目录。
  • dataset_path: [[str, str], ...]:预处理后的数据集的绝对路径。该字段的值为列表,列表的每一项都是含有两个元素的子列表,子列表的第一个元素是训练集的绝对路径,第二个元素是验证集的绝对路径。
  • tokenizer_path: str:词表绝对路径。默认值为仓库根目录下tokenizer/tokenizer_16384.json
  • random_seed: int:Torch的随机数种子。默认值为39。固定这个值,便于复现特定结果,利于调试。
  • batch_size: int:训练批大小。默认值为32。一般来说,批大小越大,越有利于模型收敛,也更能充分利用算力资源。但代价是成倍消耗显存。如果启用梯度累加,则实际等效批大小为batch_size乘以gradient_accumulation_steps
  • gradient_accumulation_steps: int:梯度累加步数。默认值:1。在DDP场景下,梯度累积步数必须是GPU卡数的整数倍。梯度累加技术可以在有限的批次大小上模拟以较大批大小训练的效果,其原理是以时间换空间,根据偏导数的加法分配律,将几个小批次上多步迭代得到的梯度进行累加,使用累加后的梯度一次性更新参数,达到模拟较大批次的效果。
  • grad_clip: float:梯度压限系数,用于防止梯度爆炸。默认值:1.0。
  • dropout: float:随机丢弃层的丢弃概率,仅在训练阶段有效。默认值:0。预训练阶段一般设置为0,微调阶段一般为非0。
  • learning_rate: float:初始学习率。默认值:5e-4。模型越小,初始学习率越应适当增大。
  • weight_decay: float:权重衰减系数。默认值:1e-1。
  • beta1: float:AdamW优化器参数,详见文档。默认值:0.9。
  • beta2: float:AdamW优化器参数,详见文档。默认值:0.99。
  • decay_lr: bool:是否启用学习率调度?若不启用,则为恒定学习率。默认值:true。
  • warmup_iters: int:学习率预热阶段的步数,仅当启用学习率调度时有效。默认值:10000。
  • lr_decay_iters: int:学习率调度的总步数,仅当启用学习率调度时有效。默认值:1e9。
  • min_lr: float:最小学习率,仅当启用学习率调度时有效。默认值:6e-5。
  • eval_interval: int:每隔几步在验证集上计算一次损失。默认值:100。说明:如果满足检查点保存条件,将保存检查点。
  • log_interval: int:每隔几步打印一次日志。默认值:10。注意:打印日志会计算损失值,比较耗时,因此不建议过于频繁地打印日志。
  • eval_iters: int:每次验证需要用几批数据。默认值:5。
  • backend: str:分布式通信后端。可选值:nccl等。用于DDP。
  • device: str:计算设备。可选值:cudacuda:x用于指定某个GPU、cpumps等。一般无需特别设置,除非:①设备无显卡,将自动回落到CPU;②DDP模式下将自动设置为某一块GPU。
  • sdp_kernel: str:缩放点积注意力的实现。可选值:math基础、flash高效(默认)、mem_efficient节省显存。其中flash仅支持FP16和BF16两种输入精度,且可能存在其他限制条件。
  • dtype: str:训练数据类型。可选值:float32单精度(E8M23)、float16半精度(E5M10)、bfloat16半精度(E8M7,默认)。一般而言,若使用Ampere及以上的GPU架构,建议使用BF16。
  • use_amp: bool:是否使用自动混合精度技术?仅当dtype设置为FP16和BF16时,才支持AMP。一般而言,启用AMP可节约显存占用,同时有助于训练稳定和收敛,也能够充分利用半精度运算所带来的速度增益。但是笔者实测发现,在 AGX Orin 和 Orin NX 等Ampere架构的GPU上,关闭AMP并使用BF16数据类型,性能更高,但代价是损失数值计算精度,可能带来模型难以收敛的风险。若AMP开启,默认同时启用TF32支持,以提升32位浮点数的运算性能。

解码策略

  • Nano采用基于温度的随机采样策略,结合top-p、top-k采样和重复惩罚机制,从语言模型输出的概率分布中按照概率随机地采样出词元序列。若温度为0,则退化为贪心采样,即每次都选概率最大的词元。
  • Nano同时支持去噪和序列到序列的(非自回归)推理,用于NLP以外的其他问题的研究。

基于DeepSpeed的分布式训练(已废弃)

<details>

Nano支持基于DeepSpeed的零冗余优化(ZeRO)训练。以2节点4卡ZeRO3-Offload方式为例,在主节点上执行以下命令。可以修改ds_config.json以调整ZeRO设置。注意:根据文档train_batch_size必须等于train_micro_batch_size_per_gpu gradient_accumulation GPU数量。

deepspeed train_deepspeed.py --deepspeed --deepspeed_config deepspeed_config.json --hostfile=hostfile.txt

其中hostfile.txt的内容如下:

192.168.10.52 slots=2
192.168.10.61 slots=2

推理阶段注意:如果是DeepSpeed训练的模型,则需要先执行checkpoint/ds目录中的转换脚本,将其转化为PyTorch能够接受的state_dict格式,再执行推理脚本:

cd Nano/checkpoint/ds
python zero_to_fp32.py . ckpt_ds.pt
cd Nano
python inference_ds.py

</details>

模型评测

🎯 aiskill88 AI 点评 A 级 2026-05-26

Nano AI是一个高性能的开源AI工具,支持LLM训练和推理

⚡ 核心功能
👥 适合人群
AI 技术爱好者研究人员和学生开发者和工程师技术创业者
🎯 使用场景
  • 本地部署运行,保护数据隐私,满足合规要求
  • 自定义集成到现有系统,扩展技术栈能力
  • 作为开源基础组件进行商业化二次开发
⚖️ 优点与不足
✅ 优点
  • +完全开源免费,无授权费用
  • +本地部署,数据完全自主可控
  • +开发者社区支持,遇问题可查可问
⚠️ 不足
  • 未明确开源协议,商用场景需谨慎评估
  • 安装和初始配置可能需要一定技术基础
  • 功能完整性通常不如成熟商业产品
  • 技术支持主要依赖开源社区,响应速度不稳定
⚠️ 使用须知

该工具未明确声明开源协议,商业使用前请联系原作者确认授权范围,避免侵权风险。

AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。

建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。

🔗 相关工具推荐
🧩 你可能还需要
基于当前 Skill 的能力图谱,自动补全的工具组合
❓ 常见问题 FAQ
参考项目文档和示例代码
💡 AI Skill Hub 点评

AI Skill Hub 点评:Nano AI 的核心功能完整,质量优秀。对于AI 技术爱好者来说,这是一个值得纳入个人工具库的选择。建议先在非生产环境试用,再逐步推广。

📚 深入学习 Nano AI
查看分步骤安装教程和完整使用指南,快速上手这款工具
🌐 原始信息
原始名称 Nano
Topics aigptllmllm-inferencellm-training
GitHub https://github.com/bd4sur/Nano
语言 C
🔗 原始来源
🐙 GitHub 仓库  https://github.com/bd4sur/Nano 🌐 官方网站  https://bd4sur.com/Nano/infer/web

收录时间:2026-05-26 · 更新时间:2026-05-26 · License:未公布 · AI Skill Hub 不对第三方内容的准确性作法律背书。