WhiteLightning 是一个开源命令行工具,旨在帮助开发者通过单行命令快速生成轻量级文本分类模型。工具利用大型语言模型生成合成数据,通过师生蒸馏技术训练出小于1MB的ONNX模型,支持完全离线运行,适合边缘设备如树莓派、手机或低功耗设备。WhiteLightning 由乌克兰公司Inoxoft开发,历时一年,支持多语言编程,强调隐私保护和低成本部署。用户无需准备真实数据即可生成模型,适用于情感分析、垃圾邮件过滤等场景。项目采用GPL-3.0许可证,模型使用MIT许可证,社区通过GitHub和Discord提供支持。
功能列表
- 一键生成小于1MB的ONNX文本分类模型,支持多类分类,如情感分析、垃圾邮件检测。
- 利用大型语言模型(如Grok-3-beta、GPT-4o-mini)生成合成训练数据,无需真实数据。
- 支持完全离线运行,模型部署后无需云端API,保护数据隐私。
- 兼容Python、Rust、Swift、Node.js、Dart等多种编程语言,适配多种开发环境。
- 提供Docker容器,支持macOS、Linux、Windows,简化安装和运行。
- 集成GitHub Actions,支持云端模型训练和CI/CD自动化流程。
- 提供交互式命令生成器,简化复杂参数配置。
- 支持边缘案例生成,确保模型在复杂输入场景下表现稳定。
- 模型训练过程透明,日志显示进度、准确率和损失值。
使用帮助
安装流程
WhiteLightning 通过Docker容器分发,确保跨平台一致性和简便性。以下是详细安装步骤:
- 安装Docker
确保设备已安装Docker。macOS和Linux用户可从Docker官网下载安装包,Windows用户建议使用PowerShell运行命令。验证Docker安装:docker --version
若未安装,请参考官方指南完成安装。
- 拉取WhiteLightning镜像
从Docker Hub拉取最新镜像:docker pull ghcr.io/inoxoft/whitelightning:latest
镜像内置所有依赖,无需额外配置Python或其他环境。
- 设置API密钥
WhiteLightning 在训练阶段需调用大型语言模型(如OpenRouter提供)生成合成数据,因此需配置API密钥。例如:export OPEN_ROUTER_API_KEY="sk-..."
将
"sk-..."
替换为从OpenRouter官网获取的实际密钥。密钥仅用于训练,生成的模型运行时无需联网。 - 运行容器
使用Docker运行WhiteLightning,生成分类模型。例如,分类客户评论为正面、中立或负面:docker run --rm -e OPEN_ROUTER_API_KEY="sk-..." -v "$(pwd)":/app/models ghcr.io/inoxoft/whitelightning:latest python -m text_classifier.agent -p "Categorize customer reviews as positive, neutral, or negative"
命令说明:
--rm
运行后自动删除容器,节省空间。-e
设置API密钥环境变量。-v "$(pwd)":/app/models
将当前目录挂载到容器,保存生成的模型。-p
指定分类任务,需简洁描述任务目标。
Windows用户将$(pwd)
替换为${PWD}
。
- 验证安装
运行命令后,工具在约10分钟内生成ONNX模型,保存至挂载目录(如models_multiclass/customer_review_classifier/customer_review_classifier.onnx
)。检查日志确认训练完成,日志示例:✅ - INFO - Test set evaluation - Loss: 0.0006, Accuracy: 1.0000
确保输出目录包含模型文件。
使用主要功能
WhiteLightning 的核心功能是一键生成和部署轻量级文本分类模型。以下是详细操作流程:
生成文本分类模型
用户通过-p
参数指定分类任务,工具自动完成合成数据生成和模型训练。例如,生成垃圾邮件分类器:
docker run --rm -e OPEN_ROUTER_API_KEY="sk-..." -v "$(pwd)":/app/models ghcr.io/inoxoft/whitelightning:latest python -m text_classifier.agent -p "Classify emails as spam or not spam"
- 流程:
- 工具调用大型语言模型(如
x-ai/grok-3-beta
或openai/gpt-4o-mini
)生成合成数据,默认每类50条,包含边缘案例。 - 使用师生蒸馏技术,基于合成数据训练轻量级ONNX模型。
- 训练完成后,模型导出至指定目录,日志显示训练进度(如
Epoch 20/20 - accuracy: 1.0000
)。
- 工具调用大型语言模型(如
- 输出:模型文件(如
customer_review_classifier.onnx
)和日志,记录数据生成和训练详情。
部署和运行模型
生成的ONNX模型支持多种语言运行,占用空间小,适合边缘设备。以下以Python为例:
- 安装ONNX运行时:
pip install onnxruntime
- 加载并运行模型:
import onnxruntime as ort import numpy as np session = ort.InferenceSession("models_multiclass/customer_review_classifier/customer_review_classifier.onnx") input_data = np.array(["This product is amazing!"], dtype=np.object_) outputs = session.run(None, {"input": input_data}) print(outputs) # 输出结果,如 ['positive']
- 其他语言(如Rust、Swift)参考ONNX官网运行时文档。
高级配置
WhiteLightning 提供灵活的参数配置,优化模型性能:
- 提示优化循环:通过
-r
参数设置优化次数,默认1次。例如:-r 3
增加循环提高数据质量,但延长训练时间。
- 边缘案例生成:通过
--generate-edge-cases
启用,默认开启,每类生成50条边缘案例:--generate-edge-cases True
确保模型处理复杂输入时表现稳定。
- 模型选择:支持多种大型语言模型,配置文件中可指定(如
x-ai/grok-3-beta
)。 - 数据量调整:通过
--target-volume-per-class
设置每类数据量,默认50条。例如:--target-volume-per-class 100
在线Playground
WhiteLightning 提供在线Playground,用户无需安装即可测试模型生成。访问Playground,输入任务描述(如“Classify tweets as happy or sad”),点击生成,查看模型输出。Playground适合快速验证任务效果。
社区支持与调试
- GitHub Actions:支持云端训练,访问GitHub仓库的“Actions”页面,选择“Test Model Training”,配置参数后运行。
- 调试:
- 若Docker命令失败,检查Docker服务是否运行,确认权限。
- 若API密钥无效,重新从OpenRouter获取。
- 日志文件位于输出目录,记录详细错误信息。
- 社区支持:加入Discord服务器与开发者交流,或在GitHub提交issue。
注意事项
- 训练阶段需稳定网络连接以调用API生成数据。
- 模型运行时完全离线,适合隐私敏感场景。
- 确保输出目录有写权限,Windows用户注意路径格式。
- 模型训练时间因任务复杂度和数据量而异,通常10-15分钟。
应用场景
- 移动应用开发
WhiteLightning 生成的轻量级模型适合集成到移动应用,如聊天软件的情感分析功能。模型占用空间小,运行效率高,适配低功耗设备。 - 边缘设备部署
在树莓派或工业控制器上运行文本分类模型,处理实时日志或用户输入。离线运行避免数据泄露,适合工业场景。 - 隐私敏感场景
医疗、金融领域处理敏感文本数据时,WhiteLightning 的离线模型确保数据不上传云端,保护隐私。 - 快速原型开发
开发者可快速生成分类模型,测试不同任务效果,缩短开发周期,适合初创公司或研究团队。
QA
- WhiteLightning 是否需要持续联网?
仅训练阶段需联网调用API生成合成数据,生成的模型完全离线运行。 - 模型大小是多少?
模型通常小于1MB,具体大小取决于任务复杂度和数据量,远小于传统大型模型。 - 支持哪些编程语言?
ONNX模型支持Python、Rust、Swift、Node.js、Dart、C++等,参考ONNX运行时文档。 - 如何处理训练失败?
检查API密钥、网络连接或Docker权限。日志文件记录详细错误,可在GitHub或Discord寻求社区帮助。 - 是否需要准备真实数据?
不需要。WhiteLightning 使用大型语言模型生成合成数据,支持零数据场景建模。