mistral.rs icon indicating copy to clipboard operation
mistral.rs copied to clipboard

Fix AFQ8 parsing for --isq

Open EricLBuehler opened this issue 9 months ago • 2 comments

Summary

  • implement FromStr for IsqType
  • delegate ISQ string parsing to IsqType::from_str

Testing

  • cargo fmt (fails: rustfmt not installed)
  • cargo check --locked (fails: could not fetch candle git dependency)

Summary by CodeRabbit

  • New Features

    • Added support for parsing quantization type strings directly, allowing users to specify quantization types using various string formats.
  • Bug Fixes

    • Improved error messages when specifying invalid quantization types, now listing all valid options for easier correction.

EricLBuehler avatar May 17 '25 16:05 EricLBuehler

Walkthrough

The changes refactor the parsing logic for ISQ quantization types. The manual string-to-enum mapping in the pipeline is replaced by delegating to a new FromStr implementation for the IsqType enum. This centralizes and standardizes string parsing for ISQ types, with conditional handling for different features.

Changes

File(s) Change Summary
mistralrs-core/src/pipeline/isq.rs Refactored parse_isq_value to use IsqType::from_str(s)? instead of manual match mapping.
mistralrs-quant/src/lib.rs Added FromStr trait implementation for IsqType, enabling string parsing for all variants.

Poem

In the warren of code, a change hops through, Parsing ISQ types now clean and new. From match to trait, the logic’s concise, Enum and string, they play nice. With every refactor, the garden grows bright— A rabbit’s delight in code done right! 🐇✨


📜 Recent review details

Configuration used: CodeRabbit UI Review profile: CHILL Plan: Pro Cache: Disabled due to data retention organization setting Knowledge Base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between dc8700916788477c36b624915de6646a3eacb99b and c821b8fdcd730a31111b2fedd9efaf57ba06667e.

📒 Files selected for processing (2)
  • mistralrs-core/src/pipeline/isq.rs (1 hunks)
  • mistralrs-quant/src/lib.rs (2 hunks)
🔇 Additional comments (3)
mistralrs-quant/src/lib.rs (2)

6-6: LGTM: Added import for the new FromStr implementation.

The added import appropriately supports the new FromStr trait implementation for IsqType.


353-394: Great implementation of FromStr for the IsqType enum.

The implementation properly handles:

  • Numeric strings (like "2", "3", "4") with appropriate feature-conditional logic for metal vs. non-metal builds
  • Explicit variant names in both lowercase and uppercase
  • Comprehensive error messages listing all valid options when parsing fails

This centralizes the parsing logic in the type itself rather than duplicating it across the codebase.

mistralrs-core/src/pipeline/isq.rs (1)

63-63: Good refactoring to use the new FromStr implementation.

This change properly delegates string parsing to the newly implemented IsqType::from_str method, removing duplication and centralizing the parsing logic. The code retains the CUDA-specific validation that's required after parsing.

✨ Finishing Touches
  • [ ] 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

coderabbitai[bot] avatar May 17 '25 16:05 coderabbitai[bot]

Code Metrics Report
===============================================================================
 Language            Files        Lines         Code     Comments       Blanks
===============================================================================
 C Header                3           62           53            0            9
 Dockerfile              1           41           22           10            9
 JSON                   12          107          106            0            1
 Makefile                1            6            5            0            1
 Python                 84         3713         3163          140          410
 Shell                   1           63           26           18           19
 Plain Text              3         3723            0         2413         1310
 TOML                   19          557          512            6           39
 YAML                    2           21           19            2            0
-------------------------------------------------------------------------------
 Jupyter Notebooks       3            0            0            0            0
 |- Markdown             2           77           32           31           14
 |- Python               2          205          178            1           26
 (Total)                            282          210           32           40
-------------------------------------------------------------------------------
 Markdown               55         5002            0         3812         1190
 |- BASH                 8          104          101            0            3
 |- JSON                 1           12           12            0            0
 |- Python               7          121          109            0           12
 |- Rust                22          757          634            1          122
 |- TOML                 2           75           63            0           12
 (Total)                           6071          919         3813         1339
-------------------------------------------------------------------------------
 Rust                  378       126680       113079         2587        11014
 |- Markdown           171         2145           29         1913          203
 (Total)                         128825       113108         4500        11217
===============================================================================
 Total                 562       139975       116985         8988        14002
===============================================================================

github-actions[bot] avatar May 17 '25 16:05 github-actions[bot]