Fine Tuning as a Service (FTAAS)
register → orchestrate → train (HF / TRL / LLaMA-Factory / Unsloth / Axolotl · LoRA / QLoRA / DoRA) → MLflow → vLLM / Ray Serve → API / Console
ftaas.Client / notebook Console
\ /
▼ ▼
FTAAS gateway (:8080)
┌─────────┼──────────┐
▼ ▼ ▼
registry control deploy
│
workflow
│
runner · Ray · MLflow · vLLM
Components
| Module | Role |
|---|---|
gateway (ftaas_app) |
Single process on :8080 — Console + APIs |
| console | Web UI for setup, tracking, prompt |
| registry | Dataset registration → id:version |
| control | Fine-tune jobs + model registry |
| workflow | Pipeline create / complete |
| deploy | Endpoints (vLLM / Ray Serve path) + prompt API |
| runner | Local (or Airflow) train pipeline |
| ftaas SDK | Client for notebooks / automation |
Quick start
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
./scripts/start_all.sh # → http://127.0.0.1:8080
./scripts/e2e_smoke.sh
./scripts/stop_all.sh
SDK
from ftaas import Client, Framework, Technique, HyperParameters
with Client() as c:
ds = c.register_dataset("examples/data/alpaca_sample.jsonl", name="alpaca")
job = c.create_finetune_job(
model_name="sshleifer/tiny-gpt2",
dataset=ds,
framework=Framework.TRANSFORMERS,
technique=Technique.LORA,
parameters=HyperParameters(max_steps=10),
)
job = c.wait_for_job(job.job_id)
model = c.get_model(job.registered_model_name)
ep = c.create_endpoint(model.model_name, inference_framework="vllm")
print(c.prompt(ep.endpoint_id, "What is LoRA?").completion)
Layout
FTAAS/
├── packages/ftaas_sdk/ftaas/ # Client SDK
├── services/
│ ├── ftaas_app/ # gateway
│ ├── registry/
│ ├── control/
│ ├── workflow/
│ └── deploy/
├── runner/ # local + Airflow DAG
├── training/
├── ui/console/
├── examples/
└── scripts/
License
Apache-2.0
Metadata
Release files for ftaas 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ftaas-0.1.0.tar.gz | 13.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ftaas-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.5 kB
Release files / ftaas-0.1.0.tar.gz
| Download URL | ftaas-0.1.0.tar.gz |
|---|---|
| Size | 13.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d292d4ec337e9a69cb04d1d1f4877029ab93dba5f8d30eae9837b7cf0daebfa6
|
|
BLAKE2b-256 checksum How to use checksums |
1cc13df74227f226b073e159c28e9d1e9848a37f2afb80ba27ef281c0cb796bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|
Release files / ftaas-0.1.0-py3-none-any.whl
| Download URL | ftaas-0.1.0-py3-none-any.whl |
|---|---|
| Size | 13.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b556ac8ff68a51711b9e45f2a8bac9ac74dbfe649faa92085b268dcd0f21a24f
|
|
BLAKE2b-256 checksum How to use checksums |
d5ff03f2ababf0284c8788fd28c5fcd4c371b9a8fe3d9f5fb94eb0c3c07565ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|