Product · AI & machine learning
The AI platform that
never exports your data.
Train, fine-tune and serve models, classic ML and GenAI, on GPU compute in your own European cloud. Open models flow in from the Hugging Face Hub; your data and weights never flow out.
The full lifecycle, one platform
Data
Your Iceberg lakehouse feeds training directly. No exports, no copies, no staging buckets.
Train
GPU clusters on demand in your region. Single node or distributed, A100-class hardware.
Track
Every run, metric, parameter and artifact logged with the MLflow-compatible SDK.
Register
Version models and promote them through Staging and Production stages.
Serve
One click from a registered version to a live, low-latency endpoint.
Monitor
QPS, latency and full lineage from the model back to the exact data it saw.
Training
Serious training,
on your GPUs.
GPU on demand
Provision A100-class GPU instances on your own OVH or Scaleway account when a job starts, release them when it ends. Auto-stop means no forgotten cluster ever burns budget.
Train on the lakehouse
Read training sets straight from your Iceberg tables. The data never leaves your bucket, your VPC or your jurisdiction.
Distributed when you need it
Scale from a notebook prototype to a multi-GPU job with the same code, scheduled as a DAG task with retries and timeouts.
Reproducible by design
Every run snapshots its image, parameters and data lineage, so any result can be traced and re-run.
from polnor import mlflow
import polnor as pl
# training data straight from your lakehouse
df = pl.read("acme.ml.training_set")
with mlflow.start_run(experiment="churn-v4"):
mlflow.log_param("lr", 3e-4)
for step, loss in train(df):
mlflow.log_metric("loss", loss, step=step)
mlflow.log_artifact("model.pt") Open models
Direct line to the
Hugging Face Hub.
Your training jobs and notebooks pull models, datasets and tokenizers straight from the Hugging Face Hub. Fine-tune them on private data, cache weights on your own bucket, and register the result in your registry.
- Any open model: Mistral, Llama, Qwen, BERT family, Whisper, embeddings
- Private HF tokens stored encrypted, like every other credential
- Weights cached on your S3, so repeat runs don't re-download
- The Hub is the only thing that flows in. Nothing of yours flows out.
from transformers import AutoModel, AutoTokenizer
from polnor import mlflow
import polnor as pl
# pulled from the Hugging Face Hub, cached on your S3
model = AutoModel.from_pretrained("mistralai/Mistral-7B-v0.3")
tok = AutoTokenizer.from_pretrained("mistralai/Mistral-7B-v0.3")
corpus = pl.read("acme.ml.support_tickets") # private data
with mlflow.start_run(experiment="support-llm"):
finetune(model, tok, corpus)
mlflow.log_artifact("adapter.safetensors") GenAI & agents
GenAI on data that
stays home.
Fine-tune open models
Pull any open model from the Hugging Face Hub and fine-tune it on your private data, on your GPUs. Weights and data stay in your account.
RAG on your lakehouse
Build retrieval pipelines over governed Iceberg tables, with embeddings computed and stored on your own infrastructure.
Serve LLMs privately
Deploy fine-tuned or open models behind your own endpoints. No prompt, no document, no embedding ever reaches a US AI cloud.
Build AI apps and agents
Wire models, data and jobs together through the API and SDK to ship assistants and agents that answer from your data.
MLOps, built in
Not an add-on.
It's the console.
Runs, parameters, tags and step-by-step metric history, browsable and comparable in the console.
Versioned models with stages, descriptions and back-links to the endpoints serving them.
Checkpoints and models upload via presigned URLs straight to your bucket. The control plane never holds them.
Low-latency inference with live QPS and latency, subject to per-workspace quotas you control.
Already on MLflow? Change one import: from polnor import mlflow. Autolog included.
Audit and lineage cover training and inference, the evidence trail AI regulation increasingly demands.
Serving
From registry to live
endpoint in one step.
Promote a model version and Polnor provisions the endpoint on your compute. Live QPS and latency in the console, quotas per workspace, lineage from every prediction back to the training data.
⬢ Inference runs in your region. Prompts and predictions never leave it.
# promote v7 to a live endpoint
polnor models serve churn-v4 --version 7 --name churn-prod
# call it
curl -s https://api.polnor.net/api/v1/endpoints/churn-prod/invoke \
-H "Authorization: Bearer $TOKEN" \
-d '{"inputs": [[0.12, 3, 41.5]]}'
# → {"predictions":[0.91], "latency_ms": 9} More of the platform
Lakehouse & catalog
Open Apache Iceberg on your storage
Data warehousing
Serverless SQL warehouses, on demand
Data engineering
ETL & orchestration, batch and streaming
Business intelligence
Dashboards & live analytics
Notebooks
Git-backed, collaborative, live kernels
Compute
GPU & CPU clusters on your cloud
Governance
Audit, lineage & quotas
Security & sovereignty
Encrypted, isolated, European-only
Bring your own cloud
OVHcloud & Scaleway, your account
Set a course
Request a
demo.
See your own Iceberg tables, warehouses and notebooks running on your European cloud, usually within a week.
hello@polnor.net · OVHcloud GRA9, France 🇫🇷