Metadata-Version: 2.4
Name: langtrain-ai
Version: 1.0.0
Summary: The unified Python SDK for training, aligning, and deploying LLMs — text and vision.
Author-email: Pritesh Raj <priteshraj41@gmail.com>
Maintainer-email: Langtrain AI <contact@langtrain.ai>
License: MIT License
        
        Copyright (c) 2024 Pritesh Raj
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
        
Project-URL: Homepage, https://langtrain.xyz
Project-URL: Documentation, https://langtrain.xyz/docs
Project-URL: Repository, https://github.com/langtrain-ai/langtrain-py
Project-URL: Issues, https://github.com/langtrain-ai/langtrain-py/issues
Project-URL: PyPI, https://pypi.org/project/langtrain-ai
Keywords: llm,fine-tuning,LoRA,QLoRA,AdaptiveRank,RLHF,DPO,GRPO,PPO,vision-language-model,VLM,dataset-intelligence,TurboQuant,langtrain,langtune,langvision,transformers,peft,mlops
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.28.0
Requires-Dist: tqdm>=4.62.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: rich>=13.0.0
Requires-Dist: click>=8.0.0
Requires-Dist: numpy>=1.21.0
Provides-Extra: train
Requires-Dist: torch>=2.0.0; extra == "train"
Requires-Dist: transformers>=4.40.0; extra == "train"
Requires-Dist: peft>=0.10.0; extra == "train"
Requires-Dist: datasets>=2.14.0; extra == "train"
Requires-Dist: accelerate>=0.28.0; extra == "train"
Requires-Dist: bitsandbytes>=0.43.0; extra == "train"
Requires-Dist: trl>=0.8.0; extra == "train"
Requires-Dist: scipy>=1.10.0; extra == "train"
Requires-Dist: scikit-learn>=1.3.0; extra == "train"
Requires-Dist: pandas>=2.0.0; extra == "train"
Requires-Dist: pyarrow>=12.0.0; extra == "train"
Requires-Dist: openpyxl>=3.1.0; extra == "train"
Provides-Extra: vision
Requires-Dist: torchvision>=0.15.0; extra == "vision"
Requires-Dist: Pillow>=10.0.0; extra == "vision"
Requires-Dist: langvision>=0.1.57; extra == "vision"
Provides-Extra: kernels
Requires-Dist: triton>=2.1.0; extra == "kernels"
Requires-Dist: flash-attn>=2.3.0; extra == "kernels"
Provides-Extra: all
Requires-Dist: langtrain[kernels,train,vision]; extra == "all"
Requires-Dist: langtune>=0.1.41; extra == "all"
Requires-Dist: langvision>=0.1.57; extra == "all"
Dynamic: license-file

<div align="center">

<img src="https://raw.githubusercontent.com/langtrain-ai/langtrain-web/main/public/og-default.png" alt="Langtrain" width="400" />

<h3>The unified Python SDK for training, aligning, and deploying LLMs</h3>

<p>
  <a href="https://pypi.org/project/langtrain-ai/"><img src="https://img.shields.io/pypi/v/langtrain-ai.svg?style=for-the-badge&logo=pypi&logoColor=white" alt="PyPI" /></a>
  <a href="https://github.com/langtrain-ai/langtrain-py/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue?style=for-the-badge" alt="License" /></a>
  <a href="https://langtrain.xyz/docs"><img src="https://img.shields.io/badge/docs-langtrain.xyz-green?style=for-the-badge" alt="Docs" /></a>
</p>

</div>

---

```bash
pip install langtrain-ai              # cloud API + dataset intelligence
pip install langtrain-ai[train]       # + local GPU training (text LLMs)
pip install langtrain-ai[vision]      # + vision LLMs (LLaVA, Qwen-VL, …)
pip install langtrain-ai[all]         # everything
```

## What's inside

| Module | What it does |
|---|---|
| `FastLanguageModel` | Unsloth-style API for text LLMs — local or cloud |
| `FastVisionModel` | Same API for vision LLMs (LLaVA, Qwen-VL, InternVL, …) |
| `AdaptiveRankTrainer` | Novel algorithm: SpectralLoRA + dynamic rank + TurboQuant |
| `DatasetIntelligence` | Drop any file → auto model + training config |
| `LangtrainClient` | Cloud API: fine-tune, deploy, chat, GPU, models |
| `lt` CLI | `lt login`, `lt fine-tune`, `lt analyze`, `lt gpu` |

## Quick start

### Drop any dataset — get a training config

```python
from langtrain import DatasetIntelligence

report = DatasetIntelligence.analyze("my_data.jsonl")
report.print_summary()
# ┌─────────────────────────────────────────────┐
# │  Task type    instruction  (87% confidence) │
# │  Domain       medical                       │
# │  Samples      2,400                         │
# │  Model        meta-llama/Llama-3.1-8B       │
# │  Method       adaptive_rank  rank=16        │
# │  TurboQuant   ✓ polar_quant+qjl             │
# └─────────────────────────────────────────────┘
```

### Local training with AdaptiveRank

```python
from langtrain import FastLanguageModel, AdaptiveRankConfig

config = AdaptiveRankConfig(
    initial_rank=16,
    max_rank=64,           # grows/shrinks based on gradient variance
    use_turboquant_kv=True # PolarQuant 3-bit KV cache
)

model, tokenizer = FastLanguageModel.from_pretrained(
    "meta-llama/Llama-3.1-8B",
    load_in_4bit=True,
)
model = FastLanguageModel.get_peft_model(model, method="adaptive_rank", config=config)
FastLanguageModel.train(model, tokenizer, dataset, output_dir="./output")
```

### Cloud API

```python
from langtrain import LangtrainClient

client = LangtrainClient(api_key="lt_...")

# Check account + GPU options
print(client.me())
print(client.gpu.available())

# Fine-tune
job = client.fine_tune(
    model="meta-llama/Llama-3.1-8B",
    dataset_id="ds_xyz",
    method="adaptive_rank",
)
for step in job.stream():
    print(step)
```

### CLI

```bash
lt login                              # authenticate
lt whoami                             # account + GPU availability
lt gpu                                # list GPU options
lt analyze my_data.jsonl              # dataset intelligence
lt fine-tune llama-3.1-8b data.jsonl  # launch training
lt jobs                               # list jobs
lt models                             # list models
```

## Why Langtrain vs Unsloth?

| | Unsloth | **Langtrain** |
|---|---|---|
| Text LLMs | ✓ | ✓ FastLanguageModel |
| Vision LLMs | ✗ | ✓ FastVisionModel |
| Training algorithm | vanilla QLoRA | **AdaptiveRank** (SpectralLoRA + dynamic rank) |
| Dataset analysis | ✗ | ✓ **DatasetIntelligence** (7-pass, auto model pick) |
| KV cache compression | ✗ | ✓ **TurboQuant** (6× memory, 8× speed) |
| Cloud training | ✗ | ✓ langtrain-server (A100/H100) |
| RL alignment | ✗ | ✓ DPO / GRPO / PPO / Constitutional AI |
| CLI | ✗ | ✓ `lt fine-tune`, `lt analyze`, `lt gpu` |

---

Made by [Langtrain AI](https://langtrain.xyz) · [Docs](https://langtrain.xyz/docs) · [Discord](https://discord.gg/langtrain)
