Instructions to use google/gemma-2b-it with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use google/gemma-2b-it with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="google/gemma-2b-it") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("google/gemma-2b-it") model = AutoModelForCausalLM.from_pretrained("google/gemma-2b-it") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.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(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - llama-cpp-python
How to use google/gemma-2b-it with llama-cpp-python:
# !pip install llama-cpp-python from llama_cpp import Llama llm = Llama.from_pretrained( repo_id="google/gemma-2b-it", filename="gemma-2b-it.gguf", )
llm.create_chat_completion( messages = [ { "role": "user", "content": "What is the capital of France?" } ] ) - Inference
- Notebooks
- Google Colab
- Kaggle
- Local Apps
- llama.cpp
How to use google/gemma-2b-it with llama.cpp:
Install from brew
brew install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama-server -hf google/gemma-2b-it # Run inference directly in the terminal: llama-cli -hf google/gemma-2b-it
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama-server -hf google/gemma-2b-it # Run inference directly in the terminal: llama-cli -hf google/gemma-2b-it
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf google/gemma-2b-it # Run inference directly in the terminal: ./llama-cli -hf google/gemma-2b-it
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf google/gemma-2b-it # Run inference directly in the terminal: ./build/bin/llama-cli -hf google/gemma-2b-it
Use Docker
docker model run hf.co/google/gemma-2b-it
- LM Studio
- Jan
- vLLM
How to use google/gemma-2b-it with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "google/gemma-2b-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-2b-it", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/google/gemma-2b-it
- SGLang
How to use google/gemma-2b-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-2b-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-2b-it", "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 "google/gemma-2b-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-2b-it", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Ollama
How to use google/gemma-2b-it with Ollama:
ollama run hf.co/google/gemma-2b-it
- Unsloth Studio new
How to use google/gemma-2b-it with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for google/gemma-2b-it to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for google/gemma-2b-it to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for google/gemma-2b-it to start chatting
- Docker Model Runner
How to use google/gemma-2b-it with Docker Model Runner:
docker model run hf.co/google/gemma-2b-it
- Lemonade
How to use google/gemma-2b-it with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull google/gemma-2b-it
Run and chat with the model
lemonade run user.gemma-2b-it-{{QUANT_TAG}}List all available models
lemonade list
Running on Google Pixel TPU?
Hi, I'd like to ask, is it possible to run this on a Google Pixel TPU like the one in the Pixel 7 or Pixel 8. It would be amazing if it could be done as I think it could immensely increase the speed?
Hi @soupslurpr
if I am not mistaked there is no reason the model should'nt work on a TPU device. cc @sanchit-gandhi who recently shared how to run gemma on a free-tier TPU device: https://x.com/sanchitgandhi99/status/1760733806276038811?s=20
Pixel TPU is not open for use to non-Google apps AFAIK.
Pixel TPU is not open for use to non-Google apps AFAIK.
Pretty sure it is, just got to use NNAPI https://developer.android.com/ndk/guides/neuralnetworks
But it also has to use the supported ops for TPU when I used Tensorflow whisper for example could only run on CPU
I'd love to see a version of Google Assistant running this locally. I think that's where they're heading with this since the model is so small. I just hope they don't cancel it like so many other things google does.
That entire NNAPI page does not mention TPU at all lol
"Note: This topic uses the term "device" to refer to CPUs, GPUs, and accelerators. In other topics on this site, "device" refers to Android devices. To clarify this distinction, when referring to an Android device, this topic includes the word "Android." All other instances of the word device refer to processors and accelerators."
https://developer.android.com/ndk/guides/neuralnetworks#:~:text=Note%3A%20This,processors%20and%20accelerators.
How would tensorflow lite use the TPU then?
TensorFlow Lite specifically mentions the use of NPUs while using NNAPI.
(https://www.tensorflow.org/lite/android/delegates/nnapi)
(https://www.tensorflow.org/lite/performance/delegates)
NPU and TPU are the same thing?
From an acronym perspective, they're similar since most neural networks are tensor-based, but in practice:
NPU
- Usually included as part of an SOC
- Usually has support for a multitude of formats and can do a wider range of machine learning tasks
- Wider range of APIs and SDKs
TPU
- Designed and developed by Google
- Can be on an SOC (such as the Pixel Tensos) or as add-in cards (such as Google Coral).
- Designed to handle specific Google models
- Designed to work with TensorFlow only
In short (from what I gather), TPU is Google's proprietary implementation of an NPU. That said, TPU stands for Tensor Processor Unit... so .... it's mostly a difference in nomenclatures as I've heard them used interchangeably pretty often. Nvidia has Tensor cores, and other frameworks such as Onnix use tensors. In short it's a cluster mess, similar to how some companies use TOPS as "Tera Operations Per Second" and others use it as "Tensor Operations Per Second". Even Nvidia's own employees get confused since it's used interchangeably inside the company, so no one's sure what TOPS is referring to at any given moment.
Hi @soupslurpr , Running a model like Gemma-7b on a Google Pixel TPU (as seen in Pixel 7 or Pixel 8) is not currently feasible due to the hardware and memory constraints of mobile devices. Could you please use cloud-based or server-side processing for large models like Gemma-7b, with the device acting as a frontend for input and output. Thank you.