Skip to main content

A collection of tools for machine learning research, including experiment management, Kubernetes utilities, and LaTeX processing.

Project description

ML Research Tools

Python 3.11+ License: MIT Documentation Documentation Status Tests

A comprehensive toolkit for machine learning research workflows, designed to streamline common tasks in experimentation, documentation, and deployment processes.

Key Features

  • LaTeX Tools

    • Grammar and style checker for LaTeX documents
    • Automatic suggestions for improving technical writing
  • LLM Integration

    • Easy interaction with OpenAI and compatible LLMs
    • Chat and completion interfaces with robust error handling
    • Automatic retries and caching to reduce API costs
    • Support for multiple model presets and tiers
  • Document Tools

    • Ask questions and get answers about documentation
  • Experiment Management

    • Weights & Biases run logs downloader
  • Kubernetes Tools

    • Pod port forwarding with automatic reconnection
  • Caching System

    • Redis-based function result caching
    • Transparent caching with decorators

Installation

From PyPI (Recommended)

pip install ml_research_tools

From Source

git clone https://github.com/alexdremov/ml_research_tools.git
cd ml_research_tools
poetry install

Configuration

The toolkit can be configured through multiple methods, with a cascading priority:

  1. Command-line arguments (highest priority)
  2. Configuration file
  3. Default values (lowest priority)

Configuration File

By default, the configuration is stored in ~/.config/ml_research_tools/config.yaml. If this file doesn't exist, it will be created with default values when the tool is first run.

Example configuration file:

logging:
  level: INFO
  file: /path/to/log/file.log
redis:
  host: localhost
  port: 6379
  db: 0
  password: optional_password
  enabled: true
  ttl: 604800  # 7 days in seconds
llm:
  default: "standard"  # Default preset to use
  presets:
    standard:
      base_url: https://api.openai.com/v1
      model: gpt-3.5-turbo
      max_tokens: 8000
      temperature: 0.01
      top_p: 1.0
      retry_attempts: 3
      retry_delay: 5
      api_key: null
      tier: standard
    premium:
      base_url: https://api.openai.com/v1
      model: gpt-4o
      max_tokens: 8000
      temperature: 0.01
      top_p: 1.0
      retry_attempts: 3
      retry_delay: 5
      api_key: null
      tier: premium

Command-line Arguments

Configuration can be overridden using command-line arguments:

ml_research_tools --log-level DEBUG --redis-host redis.example.com --llm-preset premium paper.tex latex-grammar paper.tex

Available configuration options:

Option Description Default
--config Path to configuration file ~/.config/ml_research_tools/config.yaml
--log-level Logging level INFO
--log-file Path to log file None
--verbose Enable verbose logging False
--redis-host Redis host localhost
--redis-port Redis port 6379
--redis-db Redis database number 0
--redis-password Redis password None
--redis-disable Disable Redis caching Enabled
--redis-recache Recache results False
--llm-preset LLM preset to use standard
--llm-tier LLM tier to use None
--list-presets List available LLM presets False
--list-tools List available tools False

Development

Development Workflow

  1. Clone the repository
  2. Install development dependencies:
    poetry install --with dev
    
  3. Run tests:
    poetry run pytest
    
  4. Code quality tools:
    # Format code
    poetry run black .
    poetry run isort .
    
    # Check typing
    poetry run mypy .
    
    # Run linter
    poetry run ruff .
    

Adding a New Tool

  1. Create a new module in the appropriate directory
  2. Implement a class that inherits from BaseTool
  3. Register arguments in the add_arguments method
  4. Implement the execute method
  5. Import the module in __init__.py to ensure discovery

Example:

from ml_research_tools.core.base_tool import BaseTool

class MyNewTool(BaseTool):
    name = "my-tool"
    description = "Description of my new tool"

    def add_arguments(self, parser):
        parser.add_argument("--option", help="An option for my tool")

    def execute(self, config, args):
        # Implementation
        return 0  # Success

License

This project is licensed under the MIT License - see the LICENSE file for details.

Documentation

The full documentation is available at https://alexdremov.github.io/ml_research_tools/.

To build the documentation locally:

poetry install --with docs
cd docs
poetry run make html

Then open docs/build/html/index.html in your browser.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

LLM Disclosure

This project is wildly LLM-written (though, widely reviewed by me)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ml_research_tools-1.0.0.tar.gz (39.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ml_research_tools-1.0.0-py3-none-any.whl (47.7 kB view details)

Uploaded Python 3

File details

Details for the file ml_research_tools-1.0.0.tar.gz.

File metadata

  • Download URL: ml_research_tools-1.0.0.tar.gz
  • Upload date:
  • Size: 39.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.12.3 Linux/6.8.0-1021-azure

File hashes

Hashes for ml_research_tools-1.0.0.tar.gz
Algorithm Hash digest
SHA256 da169c5c750f9c47e374f79a4d10ab0763ece5cfe69a8dd70a8aa4bd5220b7b1
MD5 fb665e7ba3382ecfbf570db42012cb6a
BLAKE2b-256 bde9bbdf63e996cd5ecaa3e9592c8c8b4bf6bc483fc039b7583aa6a6b152ba3b

See more details on using hashes here.

File details

Details for the file ml_research_tools-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ml_research_tools-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 47.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.12.3 Linux/6.8.0-1021-azure

File hashes

Hashes for ml_research_tools-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d246aa6ec3408f6d8154a4312ac1156f2df57aa4c0b970e841f209fb400bb09e
MD5 38aaf71d78221aa5c3667ccdb25ccf1d
BLAKE2b-256 d8603b7179f4d1d06f555bd6914e30cf724fa6946fb02ad1745772bd17a4a1d0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page