Instructions to use google/gemma-3-12b-it with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use google/gemma-3-12b-it with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="google/gemma-3-12b-it") 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("google/gemma-3-12b-it") model = AutoModelForImageTextToText.from_pretrained("google/gemma-3-12b-it") 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]:])) - Inference
- Notebooks
- Google Colab
- Kaggle
- Local Apps
- vLLM
How to use google/gemma-3-12b-it with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "google/gemma-3-12b-it" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "google/gemma-3-12b-it", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/google/gemma-3-12b-it
- SGLang
How to use google/gemma-3-12b-it 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 "google/gemma-3-12b-it" \ --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": "google/gemma-3-12b-it", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'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 "google/gemma-3-12b-it" \ --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": "google/gemma-3-12b-it", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use google/gemma-3-12b-it with Docker Model Runner:
docker model run hf.co/google/gemma-3-12b-it
Image-to-text (OCR) functionality omits top-most line for recognition / output
I tried uploading a PNG containing handwritten notes using LM Studio and it returned the text but in almost all cases the top line of text from the document is missing, especially when near a possible margin.
I have tried several docs, with varying results which are unique to this model.
Other more purpose-trained models, such as olmocr-7b DO recognise / output the topmost line.
Same here. It omits either the first top line or the bottom line.
Hi,
Apologies for the late replay, thanks for reaching out to us. The above issue might be because of any of the following reasons.
Fixed Resolution and Resizing: The Gemma 3 vision encoder operates at a fixed resolution (896 X 896 pixels). When you upload a high-resolution PNG, especially one with a non-square aspect ratio, the image must be resized, scaled, or cropped to fit this square input size.
Crop Heuristics (Loss of Edge Detail): The pre-processing pipeline (even with techniques like Pan & Scan) can use heuristics to identify the main content and crop aggressively. If your handwritten notes are placed right against the margin of the PNG canvas, this automatic cropping or resizing process can mistake the edge-bound text for unimportant border information and discard it.
Recommended Workaround:
Since the issue is with the input-handling of the gemma-3-12b-it model , the most reliable fix is to modify your input image:
Add a Wide Margin: Before uploading the PNG to LM Studio, open it in an image editor and add a generous white border/margin (e.g 10-20% of the image height) to the top, bottom, and sides.
Objective: By placing the handwritten text clearly away from the physical edge of the PNG file, you prevent the model's internal cropping/resizing from accidentally cutting off the first line.
Thanks.
