The Microsoft BitNet project is an inference framework designed for 1-bit Large Language Models (LLMs), optimizing performance and efficiency on CPUs. It supports fast, lossless inference of 1.58-bit models and plans to extend support to NPUs and GPUs. The project is in active development, with significant performance gains and energy reductions reported. It is open-source under the MIT License, encouraging community collaboration.
potassiummmm
llama-bench
.Shuming Ma
Yan Xia
Goran Jelic-Cizmek
Eddie-Wang
quantize_i2_s
.Andre Buryndin
Shaoguang Mao
Yury
quantize_i2_s
.Jason Davies
Ting Song
Timespan | Opened | Closed | Comments | Labeled | Milestones |
---|---|---|---|---|---|
7 Days | 2 | 0 | 5 | 2 | 1 |
30 Days | 18 | 25 | 26 | 18 | 1 |
90 Days | 83 | 40 | 243 | 83 | 1 |
All Time | 85 | 43 | - | - | - |
Like all software activity quantification, these numbers are imperfect but sometimes useful. Comments, Labels, and Milestones refer to those issues opened in the timespan in question.
Developer | Avatar | Branches | PRs | Commits | Files | Changes |
---|---|---|---|---|---|---|
None (JCGoran) | 0 | 1/0/0 | 0 | 0 | 0 | |
Jay/Jonas (jay-tux) | 0 | 1/0/0 | 0 | 0 | 0 | |
Luca Foppiano (lfoppiano) | 0 | 1/0/0 | 0 | 0 | 0 | |
Eddie-Wang (Eddie-Wang1120) | 0 | 1/0/0 | 0 | 0 | 0 |
PRs: created by that dev and opened/merged/closed-unmerged during the period
Risk | Level (1-5) | Rationale |
---|---|---|
Delivery | 4 | The project faces significant delivery risks due to a backlog of 42 open issues, many of which are critical for installation and setup across various platforms (#128, #121, #100). The high priority of these issues suggests they could impede delivery if not resolved promptly. Additionally, the lack of recent commits and a backlog of open pull requests further exacerbate the risk of not meeting delivery goals. |
Velocity | 4 | Velocity is at risk due to a significant backlog of open issues and pull requests, with more issues being opened than closed over the last 90 days. The absence of commits in the last 14 days indicates stagnation in development activity, which could slow down progress and affect project timelines. |
Dependency | 3 | Dependency risks are moderate due to complex installation requirements and reliance on specific tools like CMake and Clang, which have caused setup difficulties (#128, #121). The introduction of new platform support (e.g., Metal for I2_S) increases dependency risks if not thoroughly tested. |
Team | 3 | The team risk is moderate, as indicated by the lack of recent commits suggesting potential burnout or motivation issues. However, active engagement in issue discussions and pull request reviews suggests ongoing collaboration and problem-solving efforts. |
Code Quality | 2 | Code quality is relatively low-risk due to ongoing efforts to address memory management issues (#67) and fix critical bugs like division-by-zero errors (#123). These improvements indicate a focus on maintaining robustness and reducing technical debt. |
Technical Debt | 3 | Technical debt risk is moderate due to unresolved issues related to model performance and setup difficulties. While there are efforts to refactor code and improve maintainability (#119), the accumulation of unresolved issues could contribute to technical debt over time. |
Test Coverage | 3 | Test coverage risk is moderate as improvements in test visibility (PR #130) do not directly enhance test coverage itself. The presence of critical bugs like division-by-zero errors suggests potential gaps in testing that need addressing. |
Error Handling | 3 | Error handling risk is moderate, as evidenced by critical bug fixes like division-by-zero errors (#123). However, recurring issues related to model conversion and quantization suggest that error handling mechanisms may still have weaknesses. |
The recent activity in the GitHub issues for the Microsoft BitNet project shows a diverse range of technical challenges and user inquiries. The project currently has 42 open issues, with several recent ones focusing on installation difficulties, model conversion errors, and performance concerns. Notably, there are recurring themes around installation problems on various platforms, particularly ARM-based systems, and issues related to model quantization and inference accuracy.
A significant anomaly is the frequent occurrence of errors during the setup process, often related to missing dependencies or incorrect configurations. For instance, issues like #128 highlight missing dependencies such as cmake
, which is crucial for building the project. Additionally, several users report problems with model conversion and inference outputs that are nonsensical or repetitive, as seen in issues #115 and #76. These suggest potential gaps in documentation or compatibility that need addressing.
Another theme is the challenge of running models efficiently on different hardware configurations, particularly ARM architectures. Several issues (#74, #56) discuss compilation errors and performance bottlenecks on ARM devices, indicating a need for better support or optimization for these platforms.
#128: How to install on Mac?
#126: How to set the EOS Token?
#128: How to install on Mac?
#129: Quantisation
#126: How to set the EOS Token?
#120: Model conversion from HF to GGUF crashes due to lack of memory
#115: Wrong and irrelevant answers with very Basic Usage
Overall, the issues reflect both technical challenges in using the BitNet framework and opportunities for improving user experience through better documentation and support for diverse hardware environments.
#130: Make the coverage table more readable with both dark and light theme
#127: Add Metal support for I2_S
#123: Fix division-by-zero
#26: python venv module
#119: Refactor TL1 codegen
#114: docs: add git submodule update to enable successful pip install
#105: Update README.md
#84: Refactor TL2 codegen
#81: Add Jupyter notebook example for Bitnet.cpp
#82:
Other closed PRs like #54 (memory leak fix) and #7 (typo fixes) indicate active maintenance and responsiveness to community feedback.
Overall, the Microsoft/BitNet repository demonstrates a vibrant development environment with active contributions aimed at enhancing both functionality and usability of the BitNet framework.
src/ggml-bitnet-lut.cpp
<vector>
, <type_traits>
, and others for basic operations. It also includes project-specific headers such as ggml-bitnet.h
, ggml-quants.h
, and bitnet-lut-kernels.h
.#if defined
) to conditionally compile sections of the code based on architecture (e.g., GGML_BITNET_ARM_TL1
and GGML_BITNET_X86_TL2
). This is a common practice in performance-critical code to optimize for different hardware.ggml_bitnet_init
) and cleanup (ggml_bitnet_free
) functions are present for managing resources, which is good practice.ggml_bitnet_can_mul_mat
) and workspace size calculation (ggml_bitnet_mul_mat_get_wsize
) are implemented.do_permutate
indicates encapsulation of functionality that is not exposed outside this file.src/ggml-bitnet-mad.cpp
quantize_i2_s
handle quantization processes, crucial for the framework's low-bit precision operations.ggml_vec_dot_i2_i8_s
) are implemented with architecture-specific optimizations.utils/e2e_benchmark.py
argparse
to handle command-line arguments, which is a standard practice for Python scripts.subprocess.run
, with error handling to log failures.setup_env.py
argparse
to manage command-line arguments effectively.subprocess.run
with logging for command execution.run_inference.py
argparse
for command-line argument management.potassiummmm
llama-bench
on Windows.Shuming Ma (shumingma)
Yan Xia (sd983527)
Goran Jelic-Cizmek (JCGoran)
Eddie-Wang (Eddie-Wang1120)
quantize_i2_s
.3rdparty/llama.cpp
.Andre Buryndin (MrEcco)
Shaoguang Mao (dawnmsg)
Yury (deiteris)
quantize_i2_s
.Jason Davies (jasondavies)
Ting Song (tsong-ms)
Collaboration: There is significant collaboration among team members, as evidenced by multiple merged pull requests and shared contributions to resolving issues like compiler errors and memory leaks.
Documentation Updates: Several team members focused on updating and refining the README.md file, indicating an emphasis on maintaining clear and accurate project documentation.
Platform Support: Recent activities include adding support for new platforms such as iOS and addressing platform-specific issues, suggesting ongoing efforts to broaden the framework's applicability.
Bug Fixes and Optimizations: The team has been actively fixing bugs, such as memory leaks and compilation errors, which indicates a focus on improving the stability and performance of the framework.
Toolchain Compatibility: Multiple commits address compatibility with different toolchains, particularly GCC, highlighting an effort to ensure broad usability across different development environments.
Overall, the development team is actively engaged in enhancing the BitNet framework through bug fixes, platform support expansion, and documentation improvements, reflecting a dynamic and collaborative development environment.