Metadata-Version: 2.4
Name: orvex-flux
Version: 5.10.0
Summary: Flux: A machine learning model-definition framework developed by Orvex Research.
Home-page: https://github.com/Orvex-Research/Flux
Author: Orvex Research
Author-email: research@orvex.com
License: Apache 2.0 License
Keywords: machine-learning nlp python pytorch transformer llm vlm deep-learning inference training model-hub pretrained-models llama gemma qwen
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.10.0
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: huggingface-hub<2.0,>=1.5.0
Requires-Dist: numpy>=1.17
Requires-Dist: packaging>=20.0
Requires-Dist: pyyaml>=5.1
Requires-Dist: regex>=2025.10.22
Requires-Dist: tokenizers<=0.23.0,>=0.22.0
Requires-Dist: typer
Requires-Dist: safetensors>=0.4.3
Requires-Dist: tqdm>=4.60
Provides-Extra: torch
Requires-Dist: torch>=2.4; extra == "torch"
Requires-Dist: accelerate>=1.1.0; extra == "torch"
Provides-Extra: vision
Requires-Dist: torchvision; extra == "vision"
Requires-Dist: Pillow<=15.0,>=10.0.1; extra == "vision"
Provides-Extra: audio
Requires-Dist: torchaudio; extra == "audio"
Requires-Dist: librosa; extra == "audio"
Requires-Dist: pyctcdecode>=0.4.0; extra == "audio"
Requires-Dist: phonemizer; extra == "audio"
Provides-Extra: video
Requires-Dist: av; extra == "video"
Provides-Extra: timm
Requires-Dist: timm>=1.0.23; extra == "timm"
Provides-Extra: quality
Requires-Dist: datasets>=2.15.0; extra == "quality"
Requires-Dist: ruff==0.14.10; extra == "quality"
Requires-Dist: GitPython<3.1.19; extra == "quality"
Requires-Dist: urllib3<2.0.0; extra == "quality"
Requires-Dist: libcst; extra == "quality"
Requires-Dist: rich; extra == "quality"
Requires-Dist: ty==0.0.20; extra == "quality"
Requires-Dist: tomli; extra == "quality"
Requires-Dist: flux-mlinter==0.1.1; extra == "quality"
Provides-Extra: docs
Requires-Dist: hf-doc-builder; extra == "docs"
Provides-Extra: kernels
Requires-Dist: kernels<0.13,>=0.12.0; extra == "kernels"
Provides-Extra: sentencepiece
Requires-Dist: sentencepiece!=0.1.92,>=0.1.91; extra == "sentencepiece"
Requires-Dist: protobuf; extra == "sentencepiece"
Provides-Extra: tiktoken
Requires-Dist: tiktoken; extra == "tiktoken"
Requires-Dist: blobfile; extra == "tiktoken"
Provides-Extra: mistral-common
Requires-Dist: mistral-common[image]>=1.10.0; extra == "mistral-common"
Provides-Extra: chat-template
Requires-Dist: jinja2>=3.1.0; extra == "chat-template"
Requires-Dist: jmespath>=1.0.1; extra == "chat-template"
Provides-Extra: sklearn
Requires-Dist: scikit-learn; extra == "sklearn"
Provides-Extra: accelerate
Requires-Dist: accelerate>=1.1.0; extra == "accelerate"
Provides-Extra: retrieval
Requires-Dist: faiss-cpu; extra == "retrieval"
Requires-Dist: datasets>=2.15.0; extra == "retrieval"
Provides-Extra: sagemaker
Requires-Dist: sagemaker>=2.31.0; extra == "sagemaker"
Provides-Extra: deepspeed
Requires-Dist: deepspeed>=0.9.3; extra == "deepspeed"
Requires-Dist: accelerate>=1.1.0; extra == "deepspeed"
Provides-Extra: optuna
Requires-Dist: optuna; extra == "optuna"
Provides-Extra: integrations
Requires-Dist: kernels<0.13,>=0.12.0; extra == "integrations"
Requires-Dist: optuna; extra == "integrations"
Requires-Dist: codecarbon>=2.8.1; extra == "integrations"
Requires-Dist: ray[tune]>=2.7.0; extra == "integrations"
Provides-Extra: ray
Requires-Dist: ray[tune]>=2.7.0; extra == "ray"
Provides-Extra: codecarbon
Requires-Dist: codecarbon>=2.8.1; extra == "codecarbon"
Provides-Extra: serving
Requires-Dist: openai>=1.98.0; extra == "serving"
Requires-Dist: pydantic>=2; extra == "serving"
Requires-Dist: uvicorn; extra == "serving"
Requires-Dist: fastapi; extra == "serving"
Requires-Dist: starlette; extra == "serving"
Requires-Dist: rich; extra == "serving"
Requires-Dist: torch>=2.4; extra == "serving"
Requires-Dist: accelerate>=1.1.0; extra == "serving"
Provides-Extra: num2words
Requires-Dist: num2words; extra == "num2words"
Provides-Extra: benchmark
Requires-Dist: optimum-benchmark>=0.3.0; extra == "benchmark"
Provides-Extra: ja
Requires-Dist: fugashi>=1.0; extra == "ja"
Requires-Dist: ipadic<2.0,>=1.0.0; extra == "ja"
Requires-Dist: unidic_lite>=1.0.7; extra == "ja"
Requires-Dist: unidic>=1.0.2; extra == "ja"
Requires-Dist: rhoknp<1.3.1,>=1.1.0; extra == "ja"
Requires-Dist: sudachipy>=0.6.6; extra == "ja"
Requires-Dist: sudachidict_core>=20220729; extra == "ja"
Provides-Extra: testing
Requires-Dist: pytest<9.0.0,>=7.2.0; extra == "testing"
Requires-Dist: pytest-asyncio>=1.2.0; extra == "testing"
Requires-Dist: pytest-random-order; extra == "testing"
Requires-Dist: pytest-rich; extra == "testing"
Requires-Dist: pytest-xdist; extra == "testing"
Requires-Dist: pytest-order; extra == "testing"
Requires-Dist: pytest-rerunfailures<16.0; extra == "testing"
Requires-Dist: pytest-timeout; extra == "testing"
Requires-Dist: pytest-env; extra == "testing"
Requires-Dist: timeout-decorator; extra == "testing"
Requires-Dist: parameterized>=0.9; extra == "testing"
Requires-Dist: psutil; extra == "testing"
Requires-Dist: dill<0.3.5; extra == "testing"
Requires-Dist: evaluate>=0.4.6; extra == "testing"
Requires-Dist: rouge-score!=0.0.7,!=0.0.8,!=0.1,!=0.1.1; extra == "testing"
Requires-Dist: nltk<=3.8.1; extra == "testing"
Requires-Dist: sacremoses; extra == "testing"
Requires-Dist: rjieba; extra == "testing"
Requires-Dist: beautifulsoup4; extra == "testing"
Requires-Dist: tensorboard; extra == "testing"
Requires-Dist: sacrebleu<2.0.0,>=1.4.12; extra == "testing"
Requires-Dist: filelock; extra == "testing"
Requires-Dist: hf-doc-builder; extra == "testing"
Requires-Dist: datasets>=2.15.0; extra == "testing"
Requires-Dist: ruff==0.14.10; extra == "testing"
Requires-Dist: GitPython<3.1.19; extra == "testing"
Requires-Dist: urllib3<2.0.0; extra == "testing"
Requires-Dist: libcst; extra == "testing"
Requires-Dist: rich; extra == "testing"
Requires-Dist: ty==0.0.20; extra == "testing"
Requires-Dist: tomli; extra == "testing"
Requires-Dist: flux-mlinter==0.1.1; extra == "testing"
Requires-Dist: faiss-cpu; extra == "testing"
Requires-Dist: datasets>=2.15.0; extra == "testing"
Requires-Dist: sentencepiece!=0.1.92,>=0.1.91; extra == "testing"
Requires-Dist: protobuf; extra == "testing"
Requires-Dist: openai>=1.98.0; extra == "testing"
Requires-Dist: pydantic>=2; extra == "testing"
Requires-Dist: uvicorn; extra == "testing"
Requires-Dist: fastapi; extra == "testing"
Requires-Dist: starlette; extra == "testing"
Requires-Dist: rich; extra == "testing"
Requires-Dist: torch>=2.4; extra == "testing"
Requires-Dist: accelerate>=1.1.0; extra == "testing"
Requires-Dist: mistral-common[image]>=1.10.0; extra == "testing"
Provides-Extra: deepspeed-testing
Requires-Dist: deepspeed>=0.9.3; extra == "deepspeed-testing"
Requires-Dist: accelerate>=1.1.0; extra == "deepspeed-testing"
Requires-Dist: pytest<9.0.0,>=7.2.0; extra == "deepspeed-testing"
Requires-Dist: pytest-asyncio>=1.2.0; extra == "deepspeed-testing"
Requires-Dist: pytest-random-order; extra == "deepspeed-testing"
Requires-Dist: pytest-rich; extra == "deepspeed-testing"
Requires-Dist: pytest-xdist; extra == "deepspeed-testing"
Requires-Dist: pytest-order; extra == "deepspeed-testing"
Requires-Dist: pytest-rerunfailures<16.0; extra == "deepspeed-testing"
Requires-Dist: pytest-timeout; extra == "deepspeed-testing"
Requires-Dist: pytest-env; extra == "deepspeed-testing"
Requires-Dist: timeout-decorator; extra == "deepspeed-testing"
Requires-Dist: parameterized>=0.9; extra == "deepspeed-testing"
Requires-Dist: psutil; extra == "deepspeed-testing"
Requires-Dist: dill<0.3.5; extra == "deepspeed-testing"
Requires-Dist: evaluate>=0.4.6; extra == "deepspeed-testing"
Requires-Dist: rouge-score!=0.0.7,!=0.0.8,!=0.1,!=0.1.1; extra == "deepspeed-testing"
Requires-Dist: nltk<=3.8.1; extra == "deepspeed-testing"
Requires-Dist: sacremoses; extra == "deepspeed-testing"
Requires-Dist: rjieba; extra == "deepspeed-testing"
Requires-Dist: beautifulsoup4; extra == "deepspeed-testing"
Requires-Dist: tensorboard; extra == "deepspeed-testing"
Requires-Dist: sacrebleu<2.0.0,>=1.4.12; extra == "deepspeed-testing"
Requires-Dist: filelock; extra == "deepspeed-testing"
Requires-Dist: hf-doc-builder; extra == "deepspeed-testing"
Requires-Dist: datasets>=2.15.0; extra == "deepspeed-testing"
Requires-Dist: ruff==0.14.10; extra == "deepspeed-testing"
Requires-Dist: GitPython<3.1.19; extra == "deepspeed-testing"
Requires-Dist: urllib3<2.0.0; extra == "deepspeed-testing"
Requires-Dist: libcst; extra == "deepspeed-testing"
Requires-Dist: rich; extra == "deepspeed-testing"
Requires-Dist: ty==0.0.20; extra == "deepspeed-testing"
Requires-Dist: tomli; extra == "deepspeed-testing"
Requires-Dist: flux-mlinter==0.1.1; extra == "deepspeed-testing"
Requires-Dist: faiss-cpu; extra == "deepspeed-testing"
Requires-Dist: datasets>=2.15.0; extra == "deepspeed-testing"
Requires-Dist: sentencepiece!=0.1.92,>=0.1.91; extra == "deepspeed-testing"
Requires-Dist: protobuf; extra == "deepspeed-testing"
Requires-Dist: openai>=1.98.0; extra == "deepspeed-testing"
Requires-Dist: pydantic>=2; extra == "deepspeed-testing"
Requires-Dist: uvicorn; extra == "deepspeed-testing"
Requires-Dist: fastapi; extra == "deepspeed-testing"
Requires-Dist: starlette; extra == "deepspeed-testing"
Requires-Dist: rich; extra == "deepspeed-testing"
Requires-Dist: torch>=2.4; extra == "deepspeed-testing"
Requires-Dist: accelerate>=1.1.0; extra == "deepspeed-testing"
Requires-Dist: mistral-common[image]>=1.10.0; extra == "deepspeed-testing"
Requires-Dist: optuna; extra == "deepspeed-testing"
Requires-Dist: sentencepiece!=0.1.92,>=0.1.91; extra == "deepspeed-testing"
Requires-Dist: protobuf; extra == "deepspeed-testing"
Provides-Extra: all
Requires-Dist: torch>=2.4; extra == "all"
Requires-Dist: accelerate>=1.1.0; extra == "all"
Requires-Dist: torchvision; extra == "all"
Requires-Dist: Pillow<=15.0,>=10.0.1; extra == "all"
Requires-Dist: torchaudio; extra == "all"
Requires-Dist: librosa; extra == "all"
Requires-Dist: pyctcdecode>=0.4.0; extra == "all"
Requires-Dist: phonemizer; extra == "all"
Requires-Dist: av; extra == "all"
Requires-Dist: kernels<0.13,>=0.12.0; extra == "all"
Requires-Dist: timm>=1.0.23; extra == "all"
Requires-Dist: sentencepiece!=0.1.92,>=0.1.91; extra == "all"
Requires-Dist: protobuf; extra == "all"
Requires-Dist: tiktoken; extra == "all"
Requires-Dist: blobfile; extra == "all"
Requires-Dist: jinja2>=3.1.0; extra == "all"
Requires-Dist: jmespath>=1.0.1; extra == "all"
Requires-Dist: num2words; extra == "all"
Requires-Dist: mistral-common[image]>=1.10.0; extra == "all"
Provides-Extra: dev
Requires-Dist: torch>=2.4; extra == "dev"
Requires-Dist: accelerate>=1.1.0; extra == "dev"
Requires-Dist: torchvision; extra == "dev"
Requires-Dist: Pillow<=15.0,>=10.0.1; extra == "dev"
Requires-Dist: torchaudio; extra == "dev"
Requires-Dist: librosa; extra == "dev"
Requires-Dist: pyctcdecode>=0.4.0; extra == "dev"
Requires-Dist: phonemizer; extra == "dev"
Requires-Dist: av; extra == "dev"
Requires-Dist: kernels<0.13,>=0.12.0; extra == "dev"
Requires-Dist: timm>=1.0.23; extra == "dev"
Requires-Dist: sentencepiece!=0.1.92,>=0.1.91; extra == "dev"
Requires-Dist: protobuf; extra == "dev"
Requires-Dist: tiktoken; extra == "dev"
Requires-Dist: blobfile; extra == "dev"
Requires-Dist: jinja2>=3.1.0; extra == "dev"
Requires-Dist: jmespath>=1.0.1; extra == "dev"
Requires-Dist: num2words; extra == "dev"
Requires-Dist: mistral-common[image]>=1.10.0; extra == "dev"
Requires-Dist: pytest<9.0.0,>=7.2.0; extra == "dev"
Requires-Dist: pytest-asyncio>=1.2.0; extra == "dev"
Requires-Dist: pytest-random-order; extra == "dev"
Requires-Dist: pytest-rich; extra == "dev"
Requires-Dist: pytest-xdist; extra == "dev"
Requires-Dist: pytest-order; extra == "dev"
Requires-Dist: pytest-rerunfailures<16.0; extra == "dev"
Requires-Dist: pytest-timeout; extra == "dev"
Requires-Dist: pytest-env; extra == "dev"
Requires-Dist: timeout-decorator; extra == "dev"
Requires-Dist: parameterized>=0.9; extra == "dev"
Requires-Dist: psutil; extra == "dev"
Requires-Dist: dill<0.3.5; extra == "dev"
Requires-Dist: evaluate>=0.4.6; extra == "dev"
Requires-Dist: rouge-score!=0.0.7,!=0.0.8,!=0.1,!=0.1.1; extra == "dev"
Requires-Dist: nltk<=3.8.1; extra == "dev"
Requires-Dist: sacremoses; extra == "dev"
Requires-Dist: rjieba; extra == "dev"
Requires-Dist: beautifulsoup4; extra == "dev"
Requires-Dist: tensorboard; extra == "dev"
Requires-Dist: sacrebleu<2.0.0,>=1.4.12; extra == "dev"
Requires-Dist: filelock; extra == "dev"
Requires-Dist: hf-doc-builder; extra == "dev"
Requires-Dist: datasets>=2.15.0; extra == "dev"
Requires-Dist: ruff==0.14.10; extra == "dev"
Requires-Dist: GitPython<3.1.19; extra == "dev"
Requires-Dist: urllib3<2.0.0; extra == "dev"
Requires-Dist: libcst; extra == "dev"
Requires-Dist: rich; extra == "dev"
Requires-Dist: ty==0.0.20; extra == "dev"
Requires-Dist: tomli; extra == "dev"
Requires-Dist: flux-mlinter==0.1.1; extra == "dev"
Requires-Dist: faiss-cpu; extra == "dev"
Requires-Dist: datasets>=2.15.0; extra == "dev"
Requires-Dist: sentencepiece!=0.1.92,>=0.1.91; extra == "dev"
Requires-Dist: protobuf; extra == "dev"
Requires-Dist: openai>=1.98.0; extra == "dev"
Requires-Dist: pydantic>=2; extra == "dev"
Requires-Dist: uvicorn; extra == "dev"
Requires-Dist: fastapi; extra == "dev"
Requires-Dist: starlette; extra == "dev"
Requires-Dist: rich; extra == "dev"
Requires-Dist: torch>=2.4; extra == "dev"
Requires-Dist: accelerate>=1.1.0; extra == "dev"
Requires-Dist: mistral-common[image]>=1.10.0; extra == "dev"
Requires-Dist: fugashi>=1.0; extra == "dev"
Requires-Dist: ipadic<2.0,>=1.0.0; extra == "dev"
Requires-Dist: unidic_lite>=1.0.7; extra == "dev"
Requires-Dist: unidic>=1.0.2; extra == "dev"
Requires-Dist: rhoknp<1.3.1,>=1.1.0; extra == "dev"
Requires-Dist: sudachipy>=0.6.6; extra == "dev"
Requires-Dist: sudachidict_core>=20220729; extra == "dev"
Requires-Dist: scikit-learn; extra == "dev"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# Flux

<p align="center">
  <img src="https://img.shields.io/badge/Version-5.10.0-blue.svg?style=for-the-badge" alt="Version">
  <img src="https://img.shields.io/badge/License-Apache%202.0-green.svg?style=for-the-badge" alt="License">
  <img src="https://img.shields.io/badge/Maintained%20By-Orvex%20Research-purple.svg?style=for-the-badge" alt="Orvex Research">
</p>

---

**Flux** acts as the core model-definition framework for state-of-the-art machine learning with text, computer vision, audio, video, and multimodal models, for both inference and training. 

It is developed and maintained by **Orvex Research**, providing a centralized, eco-system-wide framework. `flux` is the pivot across frameworks: if a model definition is supported, it is fully compatible with the majority of training frameworks (Axolotl, Unsloth, DeepSpeed, FSDP, PyTorch-Lightning, ...), inference engines (vLLM, SGLang, TGI, ...), and adjacent modeling libraries (llama.cpp, mlx, ...).

We pledge to help support new state-of-the-art models and democratize their usage by having their model definition be simple, customizable, and efficient.

---

## 🚀 Why Use Flux?

1. **Easy-to-use State-of-the-Art Models:**
   - High performance on natural language understanding & generation, computer vision, audio, video, and multimodal tasks.
   - Low barrier to entry for researchers, engineers, and developers.
   - Few user-facing abstractions with just three classes to learn.
   - A unified API for using all our pretrained models.

2. **Lower Compute Costs, Smaller Carbon Footprint:**
   - Share trained models instead of training from scratch.
   - Reduce compute time and production costs.
   - Hundreds of model architectures with 1M+ pretrained checkpoints across all modalities.

3. **Choose the Right Framework for Every Phase:**
   - Train state-of-the-art models in 3 lines of code.
   - Move a single model between PyTorch/JAX/TF2.0 frameworks at will.
   - Pick the right framework for training, evaluation, and production.

4. **Easily Customize to Your Needs:**
   - Model internals are exposed as consistently as possible.
   - Model files can be used independently of the library for quick experiments.

---

## 📦 Installation

Flux requires Python 3.10+ and PyTorch 2.4+.

### 1. From PyPI
```bash
# Using pip
pip install "flux[torch]"

# Using uv
uv pip install "flux[torch]"
```

### 2. From Source
```bash
git clone https://github.com/Orvex-Research/Flux.git
cd Flux

# Using pip
pip install -e '.[torch]'

# Using uv
uv pip install -e '.[torch]'
```

---

## 📖 Quickstart Guide

Get started with Flux right away using the **Pipeline** API. The `Pipeline` is a high-level inference class that handles preprocessing, model forwarding, and returning clean predictions.

### 1. Text Generation
```python
from flux import pipeline

# Instantiate a pipeline and specify a model
generator = pipeline(task="text-generation", model="Qwen/Qwen2.5-1.5B")
response = generator("the secret to baking a really good cake is ")
print(response)
```

### 2. Multi-turn Conversational Chat
You can chat with models programmatically or directly from your terminal:
```bash
flux chat Qwen/Qwen2.5-0.5B-Instruct
```

Or via the Python API:
```python
import torch
from flux import pipeline

chat = [
    {"role": "system", "content": "You are a helpful assistant developed by Orvex Research."},
    {"role": "user", "content": "Tell me three fun things to do in New York."}
]

generator = pipeline(task="text-generation", model="meta-llama/Meta-Llama-3-8B-Instruct", dtype=torch.bfloat16, device_map="auto")
response = generator(chat, max_new_tokens=512)
print(response[0]["generated_text"][-1]["content"])
```

### 3. Speech Recognition
```python
from flux import pipeline

asr = pipeline(task="automatic-speech-recognition", model="openai/whisper-large-v3")
result = asr("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac")
print(result)
# {'text': ' I have a dream that one day this nation will rise up and live out the true meaning of its creed.'}
```

### 4. Image Classification
```python
from flux import pipeline

classifier = pipeline(task="image-classification", model="facebook/dinov2-small-imagenet1k-1-layer")
result = classifier("https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png")
print(result)
```

---

## 🎨 Supported Modalities & Models

Flux supports a wide range of architectures. Here are some featured models for various use cases:

### 🎙️ Audio
- **Audio Classification:** CLAP
- **Automatic Speech Recognition:** Parakeet, Whisper, GLM-ASR, Moonshine-Streaming
- **Keyword Spotting:** Wav2Vec2
- **Speech to Speech Generation:** Moshi
- **Text to Audio/Speech:** MusicGen, CSM

### 👁️ Computer Vision
- **Automatic Mask Generation:** SAM
- **Depth Estimation:** DepthPro
- **Image Classification:** DINO v2
- **Keypoint Detection & Matching:** SuperPoint, SuperGlue
- **Object Detection:** RT-DETRv2
- **Pose Estimation:** VitPose
- **Universal Segmentation:** OneFormer
- **Video Classification:** VideoMAE

### 🤝 Multimodal
- **Audio/Text to Text:** Voxtral, Audio Flamingo
- **Document Question Answering:** LayoutLMv3
- **Image/Text to Text:** Qwen-VL, Llava-OneVision
- **Image Captioning & OCR:** BLIP-2, GOT-OCR2
- **Table Question & Answering:** TAPAS
- **Visual Question Answering:** Llava, Kosmos-2

### 📝 NLP (Natural Language Processing)
- **Masked Word Completion:** ModernBERT
- **Named Entity Recognition:** Gemma
- **Question Answering & Summarization:** Mixtral, BART
- **Translation:** T5
- **Text Generation:** Llama, Qwen


