Instructions to use PoSTMEDIA/Lux-V1-Pro with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use PoSTMEDIA/Lux-V1-Pro with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="PoSTMEDIA/Lux-V1-Pro") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForImageTextToText processor = AutoProcessor.from_pretrained("PoSTMEDIA/Lux-V1-Pro") model = AutoModelForImageTextToText.from_pretrained("PoSTMEDIA/Lux-V1-Pro") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps
- vLLM
How to use PoSTMEDIA/Lux-V1-Pro with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "PoSTMEDIA/Lux-V1-Pro" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "PoSTMEDIA/Lux-V1-Pro", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/PoSTMEDIA/Lux-V1-Pro
- SGLang
How to use PoSTMEDIA/Lux-V1-Pro with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "PoSTMEDIA/Lux-V1-Pro" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "PoSTMEDIA/Lux-V1-Pro", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "PoSTMEDIA/Lux-V1-Pro" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "PoSTMEDIA/Lux-V1-Pro", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use PoSTMEDIA/Lux-V1-Pro with Docker Model Runner:
docker model run hf.co/PoSTMEDIA/Lux-V1-Pro
# Load model directly
from transformers import AutoProcessor, AutoModelForImageTextToText
processor = AutoProcessor.from_pretrained("PoSTMEDIA/Lux-V1-Pro")
model = AutoModelForImageTextToText.from_pretrained("PoSTMEDIA/Lux-V1-Pro")
messages = [
{
"role": "user",
"content": [
{"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"},
{"type": "text", "text": "What animal is on the candy?"}
]
},
]
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
outputs = model.generate(**inputs, max_new_tokens=40)
print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:]))Lux-V1-Pro
Lux-V1-Pro is a fully fine-tuned LLM built on top of google/gemma-4-31B-it by PoSTMEDIA AI Lab.
It is trained with PoSTMEDIA's in-house Capability-Preserving Full Fine-Tuning recipe — a full-parameter SFT pipeline designed so that customization does not erode the reasoning, instruction-following, and multilingual abilities of the Gemma-4 base model.
Compared to Lux-V1, Lux-V1-Pro adapts a larger, dense 31B base with all parameters trainable, targeting maximum capability for demanding downstream tasks.
Highlights
- Full-parameter fine-tuning of Gemma-4-31B (dense) — every weight is updated
- Base capability preserved — pretraining knowledge and reasoning skills remain intact after SFT
- Dataset-flexible — any combination of curated instruction / domain / persona datasets can be composed into a single full-FT run
- Maximum capability tier of the Lux line, intended for the most demanding reasoning and generation workloads
Model Overview
| Specification | Details |
|---|---|
| Base Model | google/gemma-4-31B-it |
| Parameters | 31B (dense) |
| Architecture | Decoder-only Transformer (dense) |
| Training Precision | BF16 |
| Inference Precision | BF16 |
| Context Length | Inherits from Gemma-4 base |
| Fine-Tuning Method | Full-parameter SFT (Capability-Preserving recipe) |
Capability-Preserving Full Fine-Tuning
Naive full fine-tuning of large pretrained LLMs often damages the base model's general abilities — a well-known trade-off when SFT is pushed too far. PoSTMEDIA's recipe is built specifically to avoid this.
For Lux-V1-Pro, three design choices keep the Gemma-4 base intact while still allowing deep adaptation:
- All parameters trainable, conservatively. As a dense model, Lux-V1-Pro updates every weight — but under a tightly controlled optimization regime that keeps the model in the neighborhood of the pretrained distribution.
- Architecture-tuned learning rate. A lower LR is used for the 31B dense backbone, deliberately calibrated to avoid the catastrophic-forgetting regime that aggressive full-FT typically falls into.
- Continuous base-capability evaluation. Evaluation runs at the start of training and at every epoch, so any regression in base-model quality is caught early rather than discovered post-hoc.
This means Lux-V1-Pro can be re-trained from the same base with arbitrary mixtures of datasets — identity, domain knowledge, instruction-style, reasoning — without losing what Gemma-4 already knows.
Training Configuration
| Parameter | Value |
|---|---|
| Fine-Tuning Method | Full-parameter SFT (all weights trainable) |
| Precision | BF16 |
| Distributed Strategy | DeepSpeed ZeRO-3 + CPU offload |
| Training Infrastructure | NVIDIA H200 × 8 |
Quick Start
pip install transformers accelerate
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_name = "PoSTMEDIA/Lux-V1-Pro"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.bfloat16,
device_map="auto",
)
prompt = "Explain why preserving base-model capability matters during fine-tuning."
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=512)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
Use Cases
- High-capability enterprise assistants and reasoning agents
- Domain-specialized models that must retain strong general-purpose abilities
- Persona / identity-aligned chat with deep instruction following
- Downstream tasks where the larger dense backbone outperforms the MoE tier
Safety & Limitations
- Inherits the safety characteristics of the Gemma-4 base; output guardrails are recommended for production.
- Not intended for medical, legal, or financial decision-making.
- May occasionally hallucinate — human review is recommended for critical outputs.
Citation
@misc{lux_v1_pro_2026,
title = {Lux-V1-Pro: Capability-Preserving Full Fine-Tuning of Gemma-4-31B},
author = {PoSTMEDIA AI Lab},
year = {2026},
publisher = {Hugging Face}
}
Contact
PoSTMEDIA AI Lab
- Email: dev.postmedia@gmail.com
- Web: https://postmedia.ai
- Web: https://postmedia.co.kr
- Downloads last month
- 32
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="PoSTMEDIA/Lux-V1-Pro") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)