菜单

贡献

相关源文件

本页面提供了向 BitNet.cpp 项目贡献的指南——一个用于1比特(三元)大型语言模型的高效推理框架。有关设置开发环境的详细信息,请参阅开发环境设置

项目架构和贡献领域

BitNet.cpp 项目由几个核心组件组成,欢迎大家在这些领域做出贡献。了解此架构将帮助您确定您的贡献最适合哪些部分。

来源:README.md9-11 README.md36

主要贡献领域

BitNet.cpp 欢迎在以下领域做出贡献:

  1. 核心框架:增强 llama.cpp 的 BitNet 扩展
  2. 内核优化:
    • 适用于 ARM 处理器的 TL1 内核
    • 适用于 x86 处理器的 TL2 内核
  3. 模型支持:增加对其他1比特模型架构的兼容性
  4. 性能优化:提高推理速度和能效
  5. 文档:改进 Wiki 页面、示例和代码注释

来源:README.md11-17

贡献流程

设置开发环境

在您贡献之前,您需要设置您的开发环境:

  1. 分叉并克隆:分叉仓库并将其与子模块一起克隆到本地

  2. 环境设置:设置您的开发环境

  3. 安装所需工具:

    • Python 3.9 或更高版本
    • CMake 3.22 或更高版本
    • Clang 18 或更高版本

来源:README.md145-159 README.md166-177

开发工作流

开发工作流程遵循以下步骤:

  1. 创建分支:为您的功能或修复创建一个新分支
  2. 实现更改:根据项目的编码风格进行代码更改
  3. 测试您的更改:确保您的更改按预期工作(参见下面的“测试”部分)
  4. 提交更改:使用清晰、有描述性的提交信息
  5. 推送到您的分叉:将您的分支推送到您分叉的仓库
  6. 创建拉取请求:向主仓库提交拉取请求(PR)
  7. 代码审查:处理审查人员的任何反馈
  8. 合并:一旦获得批准,您的拉取请求将被合并

测试您的贡献

在提交拉取请求之前,请彻底测试您的更改,以确保它们正常工作且不会引入回归问题。

测试模型处理

性能基准测试

对于优化,请使用基准脚本验证性能改进

提交与性能相关的更改时,请在您的拉取请求中包含基准测试结果,显示改进前后的比较。

来源:README.md179-183 README.md207-208 README.md234-268

特定组件的贡献指南

核心框架贡献

当修改核心框架组件(src/bitnet.cppsrc/bitnet.h)时:

  • 保持与 llama.cpp 子模块的兼容性
  • 确保更改遵循现有架构模式
  • 添加适当的错误处理和日志记录
  • 更新任何公共 API 更改的文档注释

内核优化

对于内核优化贡献(src/bitnet-lut-kernels.hutils/codegen_tl1.pyutils/codegen_tl2.py

  • 遵循现有的查找表方法
  • 在目标硬件上进行性能基准测试
  • 在代码注释中记录优化策略
  • 兼顾性能和能效

模型支持

当添加对新模型的支持时:

  • 更新模型转换管道(utils/convert-hf-to-gguf-bitnet.py
  • 使用代表性模型进行测试
  • 文档化支持的模型架构
  • 更新文档中所有相关的表格或列表

报告问题

Bug 报告

报告 Bug 时,请包含:

  • 问题的清晰描述
  • 重现问题的步骤
  • 预期行为与实际行为
  • 环境信息(操作系统、硬件、编译器版本)
  • 相关的日志或输出

功能请求

对于功能请求,请提供:

  • 所需功能的描述
  • 用例和益处
  • 如果可用,提供实现思路

行为准则

BitNet.cpp 已采用微软开源行为准则。所有贡献者都应遵守此准则。更多信息,请参见 CODE_OF_CONDUCT.md 文件。

来源:CODE_OF_CONDUCT.md1-9

安全指南

安全漏洞不应通过公共 GitHub 问题报告。请按照 SECURITY.md 文件中概述的流程,向微软安全响应中心报告。

来源:SECURITY.md11-29

许可证

BitNet.cpp 采用 MIT 许可证。通过对项目做出贡献,您同意您的贡献也将根据相同条款获得许可。详情请参见 LICENSE 文件。

来源:LICENSE1-21