Exo is a software project by exo labs that enables users to run AI clusters using everyday devices, acting as a GPU alternative. The project is in an active development phase with a strong community interest, as evidenced by over 7500 stars on GitHub. It supports various models and emphasizes device equality through peer-to-peer connections.
Timespan | Opened | Closed | Comments | Labeled | Milestones |
---|---|---|---|---|---|
7 Days | 12 | 3 | 15 | 11 | 1 |
14 Days | 16 | 4 | 21 | 15 | 1 |
30 Days | 33 | 7 | 52 | 32 | 1 |
All Time | 190 | 67 | - | - | - |
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 |
---|---|---|---|---|---|---|
Alex Cheema | 2 | 4/4/0 | 50 | 31 | 1520 | |
Drew Royster | 1 | 1/1/0 | 2 | 3 | 253 | |
Mark Van Aken | 1 | 1/1/0 | 1 | 1 | 80 | |
Baye Dieng | 1 | 1/1/0 | 2 | 1 | 6 | |
Yazan Maarouf | 1 | 1/1/0 | 1 | 1 | 4 | |
Varshith Bathini (varshith15) | 0 | 1/0/0 | 0 | 0 | 0 | |
None (nicholasyfu1) | 0 | 1/0/1 | 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 growing backlog of issues, with 123 open issues and a concerning ratio of opened to closed issues (4.7:1). Key features like Pixtral support (#218) are under development but require thorough testing. Hardware compatibility issues (#241, #192) and unresolved bugs (#243, #235) further complicate delivery timelines. Milestones are being set, but the low number compared to issues suggests inadequate tracking. |
Velocity | 4 | Velocity is at risk due to uneven contribution levels among team members, with Alex Cheema contributing significantly more than others. The backlog of unresolved issues and the need for rework on key pull requests like parallel model preloading (#211) also slow progress. The high volume of active discussions indicates complex issues that require time to resolve. |
Dependency | 3 | Dependency risks are moderate due to reliance on external libraries like 'aiohttp' and 'grpcio', which could become outdated. Hardware compatibility challenges (#241, #192) and reliance on external repositories like 'tinygrad' pose additional risks. However, efforts like environment variable support for HF_ENDPOINT (#217) help mitigate some dependency concerns. |
Team | 3 | Team risks stem from uneven workload distribution, with Alex Cheema contributing disproportionately. This could lead to burnout or disengagement among other team members. Active discussions on issues suggest good communication but may also indicate potential conflicts or resource constraints. |
Code Quality | 3 | Code quality is a concern due to the presence of untested features in pull requests (#139), AI-generated code raising originality concerns, and incomplete documentation in Docker support (#173). Linting tools are used, but the lack of comprehensive testing affects overall quality. |
Technical Debt | 4 | Technical debt is accumulating with ongoing feature requests and unresolved bugs (#237, #206). Performance issues and incomplete implementations like caching highlight potential debt. Efforts to refactor components are underway but need careful management to avoid future complications. |
Test Coverage | 4 | Test coverage is insufficient due to hardware constraints limiting full testing of features like PyTorch integration (#139). The absence of testing dependencies in 'setup.py' raises concerns about the integration of testing frameworks into the main setup process. |
Error Handling | 3 | Error handling shows improvement with additions like error toast in Tinychat (#236), but reliance on print statements for error reporting in some files may not be robust enough. Comprehensive logging mechanisms are needed for better error management. |
Recent GitHub issue activity for the exo-explore/exo project shows a focus on enhancing compatibility and addressing bugs related to device support and model inference. Notable issues include problems with TFLOPS calculations, support for specific hardware like Intel graphics and NVIDIA GPUs, and the integration of new models such as Llama 3.2.
Common themes include expanding hardware compatibility, improving user experience by fixing bugs related to device recognition, and enhancing model support.
#243: Dynamic TFLOPS calculation
#242: we need the support for llama 3.2
#241: we need option to use intel graphics like (intel iris xe)
#192: Exo not detecting Nvidia GPUs
#186: [BOUNTY - $200] Windows native support
#184: Error on Windows 11: "NotImplementedError" in asyncio
The project is actively addressing critical compatibility issues while also expanding its feature set to support more models and devices.
.exo_used_ports
to /tmp
The project is actively evolving with numerous open pull requests focusing on expanding functionality, improving performance, and enhancing user experience. Key areas of focus include model support expansion, network optimization, and installation improvements. Some PRs require further testing or rework to align with project standards, particularly those involving complex integrations or new features like Docker support and peer-to-peer downloads. The closed PRs reflect successful enhancements in user interface, connectivity, and model capabilities.
setup.py
Structure and Dependencies:
setuptools
for package setup.extras_require
for optional packages like linting tools is a good practice.Quality:
exo/networking/tailscale/tailscale_discovery.py
Structure and Functionality:
TailscaleDiscovery
for managing Tailscale network discovery.Quality:
update_device_attributes
twice.exo/api/chatgpt_api.py
Structure and Functionality:
aiohttp
for handling HTTP requests and CORS configuration.Quality:
generate_completion
, could benefit from further decomposition to enhance readability.main.py
Structure and Functionality:
argparse
for command-line argument parsing, providing flexibility in configuration.Quality:
exo/models.py
Structure and Functionality:
Quality:
exo/inference/mlx/models/llama.py
Structure and Functionality:
Quality:
exo/networking/grpc/grpc_peer_handle.py
Structure and Functionality:
Quality:
tinychat/examples/tinychat/index.js
Structure and Functionality:
Quality:
Overall, the codebase demonstrates strong adherence to best practices in software engineering. It effectively uses modern Python features like type hints, async programming, and data classes. There are minor areas for improvement in code organization and documentation that could enhance maintainability.
Active Development: The project is actively maintained with frequent commits, primarily by Alex Cheema, focusing on networking improvements, model support, and bug fixes.
Collaborative Efforts: There is a strong collaborative environment with multiple contributors submitting changes that are quickly reviewed and merged by Alex Cheema.
Focus Areas: Recent efforts have concentrated on enhancing networking capabilities, particularly around Tailscale and UDP discovery, as well as improving the user interface in Tinychat.
Ongoing Improvements: Continuous updates to dependencies and documentation indicate an emphasis on keeping the project current and user-friendly.
Overall, the team is focused on refining the project's core functionalities while maintaining an open channel for community contributions.