Instructions to use moondream/moondream-next with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use moondream/moondream-next with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="moondream/moondream-next", trust_remote_code=True)# pip install -U transformers accelerate # Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("moondream/moondream-next", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use moondream/moondream-next with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "moondream/moondream-next" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "moondream/moondream-next", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/moondream/moondream-next
- SGLang
How to use moondream/moondream-next 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 "moondream/moondream-next" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "moondream/moondream-next", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'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 "moondream/moondream-next" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "moondream/moondream-next", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use moondream/moondream-next with Docker Model Runner:
docker model run hf.co/moondream/moondream-next
Download layers.py from moondream/moondream-next: direct link, hf CLI and curl.
- Browser
- Download file 1.36 kB
-
https://huggingface.co/moondream/moondream-next/resolve/main/layers.py
- Command line
-
hf download hf://moondream/moondream-next/layers.py
-
curl -L -o layers.py https://huggingface.co/moondream/moondream-next/resolve/main/layers.py
1.36 kB
| from dataclasses import dataclass | |
| from typing import Literal | |
| import torch | |
| from torch.nn import functional as F | |
| def gelu_approx(x): | |
| return F.gelu(x, approximate="tanh") | |
| class LinearWeights: | |
| weight: torch.Tensor | |
| bias: torch.Tensor | |
| def linear(x: torch.Tensor, w: LinearWeights) -> torch.Tensor: | |
| return F.linear(x, w.weight, w.bias) | |
| class LayerNormWeights: | |
| weight: torch.Tensor | |
| bias: torch.Tensor | |
| def layer_norm(x: torch.Tensor, w: LayerNormWeights) -> torch.Tensor: | |
| return F.layer_norm(x, w.bias.shape, w.weight, w.bias) | |
| class MLPWeights: | |
| fc1: LinearWeights | |
| fc2: LinearWeights | |
| act: Literal["gelu_approx"] = "gelu_approx" | |
| def mlp(x: torch.Tensor, w: MLPWeights) -> torch.Tensor: | |
| x = w.fc1(x) | |
| x = gelu_approx(x) | |
| x = w.fc2(x) | |
| return x | |
| class AttentionWeights: | |
| qkv: LinearWeights | |
| proj: LinearWeights | |
| def attn(x: torch.Tensor, w: AttentionWeights, n_heads: int) -> torch.Tensor: | |
| bsz, q_len, d_model = x.shape | |
| head_dim = d_model // n_heads | |
| q, k, v = [ | |
| t.view(bsz, q_len, n_heads, head_dim).transpose(1, 2) | |
| for t in linear(x, w.qkv).chunk(3, dim=-1) | |
| ] | |
| out = F.scaled_dot_product_attention(q, k, v) | |
| out = out.transpose(1, 2).reshape(bsz, q_len, d_model) | |
| out = linear(out, w.proj) | |
| return out | |