TinyLLM项目总结
该项目是通过Claude的Fetch + Github功能生成的文档,目的是为了进行质量测试!欢迎大家交流!
项目概述
TinyLLM是一个轻量级、可定制的框架,专门用于在自定义数据集上训练、微调和部署小规模大语言模型(LLMs)。该项目针对资源受限环境进行了优化,特别适合边缘设备和物联网平台的应用场景。
主要特点
- 参数规模: 模型参数量在30M-120M之间
- 目标应用: 专注于嵌入式传感应用场景,如手势检测、机器人定位和呼吸率检测
- 性能表现: 在特定任务上可以达到与大型模型相当的准确率
- 部署优势: 适合在资源受限的边缘平台上运行
技术架构与实现
1. 数据集准备
- 支持自定义CSV格式数据集
- 支持HuggingFace托管的数据集
- 默认处理Fineweb数据集(100亿token变体)和SHL物联网传感器数据集
- 提供数据集分割工具,支持训练集和验证集的自定义比例划分
2. 预训练流程
- 基于改进的GPT-2架构
- 支持多种参数规模:30M、51M、82M、101M、124M
- 支持断点续训和多轮训练
- 提供HuggingFace兼容格式的模型导出功能
3. 微调功能
- 支持多种模型架构(GPT2、LLaMA、Phi)
- 提供参数配置文件管理
- 自动生成训练和评估损失曲线
- 支持测试数据的直接查看和分析
4. 部署支持
- 支持HuggingFace transformers库直接推理
- 提供GGUF格式转换功能,适配边缘设备
- 支持模型量化优化
- 集成llama.cpp推理引擎
安装要求
-
环境依赖
- llm.c(需要GPU支持)
- llama.cpp
- Python相关依赖包
- PyTorch
-
硬件要求
- 支持GPU加速
- 适配边缘计算设备(如树莓派、Orange Pi等)
实验结果
手势识别任务
模型 | 参数量(十亿) | 模型大小(GiB) | 准确率(%) |
---|---|---|---|
Tiny Model | 0.10 | 0.277 | 98.44 |
Tiny Model | 0.12 | 0.329 | 93.02 |
Microsoft Phi 3 | 3.82 | 7.2 | 100 |
Meta Llama 3 | 8.03 | 15 | 93 |
机器人定位任务
模型 | 参数量(十亿) | 模型大小(GiB) | 准确率(%) |
---|---|---|---|
Tiny Model | 0.08 | 0.231 | 98.57 |
Tiny Model | 0.12 | 0.329 | 100 |
Microsoft Phi 3 | 3.82 | 7.2 | 100 |
Meta Llama 3 | 8.03 | 15 | 100 |
主要优势
-
模型大小与性能平衡
- 显著smaller的模型大小
- 在特定任务上可达到或超越大型模型的性能
-
实用性
- 适合边缘计算场景
- 降低了部署和运行成本
- 减少了网络依赖
-
隐私保护
- 支持本地推理
- 避免敏感数据传输到第三方服务器
使用的外部数据集
- Fineweb
- SHL(传感器数据集)
- ExtraSensory
相关资源
- 官方网站: TinyLLM.org
- 论文: ArXiv/2412.15304
- 预训练模型: 可在HuggingFace获取
项目状态
- 当前版本:v0.1
- 最近更新:2024-12-21
- 许可证:Apache-2.0
致谢
项目基于以下开源工具构建:
- llm.c
- llama.cpp
未来展望
-
更多数据集支持
- 当前提供3个内部处理的数据集(手势检测、定位和呼吸检测)
- 计划添加更多数据集支持
-
性能优化
- 持续改进模型量化效果
- 优化边缘设备部署性能
-
社区贡献
- 欢迎社区贡献预训练模型
- 支持更多应用场景的扩展