Text Generation
Transformers
Safetensors
English
Chinese
Russian
yue2
music-generation
orbitquant
quantization
4-bit precision
custom-code
8-bit precision
Instructions to use WaveCut/YuE2-3B-OrbitQuant-W4A4 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use WaveCut/YuE2-3B-OrbitQuant-W4A4 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="WaveCut/YuE2-3B-OrbitQuant-W4A4")# Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("WaveCut/YuE2-3B-OrbitQuant-W4A4", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use WaveCut/YuE2-3B-OrbitQuant-W4A4 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "WaveCut/YuE2-3B-OrbitQuant-W4A4" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "WaveCut/YuE2-3B-OrbitQuant-W4A4", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/WaveCut/YuE2-3B-OrbitQuant-W4A4
- SGLang
How to use WaveCut/YuE2-3B-OrbitQuant-W4A4 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 "WaveCut/YuE2-3B-OrbitQuant-W4A4" \ --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": "WaveCut/YuE2-3B-OrbitQuant-W4A4", "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 "WaveCut/YuE2-3B-OrbitQuant-W4A4" \ --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": "WaveCut/YuE2-3B-OrbitQuant-W4A4", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use WaveCut/YuE2-3B-OrbitQuant-W4A4 with Docker Model Runner:
docker model run hf.co/WaveCut/YuE2-3B-OrbitQuant-W4A4
| import hashlib | |
| import json | |
| import os | |
| import statistics | |
| from pathlib import Path | |
| import orbitquant_packed_matmul as kernel | |
| import torch | |
| results = [] | |
| torch.manual_seed(0) | |
| for m, n, k in [ | |
| (1, 1024, 2048), | |
| (1, 2048, 2048), | |
| (1, 4096, 2048), | |
| (1, 12288, 2048), | |
| (1, 2048, 6144), | |
| (2, 4096, 4096), | |
| (8, 8192, 8192), | |
| (16, 2048, 2048), | |
| ]: | |
| x = torch.randint(256, (m, k // 2), dtype=torch.uint8, device="cuda") | |
| w = torch.randint(256, (n * k // 2,), dtype=torch.uint8, device="cuda") | |
| xn = torch.rand(m, device="cuda") | |
| wn = torch.rand(n, device="cuda", dtype=torch.bfloat16) | |
| ac = torch.randint(-127, 128, (16,), device="cuda", dtype=torch.int8) | |
| wc = ac.flip(0).contiguous() | |
| def f(x=x, w=w, xn=xn, wn=wn, ac=ac, wc=wc, n=n, k=k): | |
| return kernel.matmul_packed_w4a4_int8( | |
| x, | |
| w, | |
| xn, | |
| wn, | |
| ac, | |
| wc, | |
| activation_scale=0.03, | |
| weight_scale=0.04, | |
| out_features=n, | |
| in_features=k, | |
| ) | |
| stream = torch.cuda.Stream() | |
| stream.wait_stream(torch.cuda.current_stream()) | |
| with torch.cuda.stream(stream): | |
| for _ in range(5): | |
| out = f() | |
| torch.cuda.current_stream().wait_stream(stream) | |
| g = torch.cuda.CUDAGraph() | |
| with torch.cuda.graph(g): | |
| for _ in range(16): | |
| out = f() | |
| samples = [] | |
| for _repeat in range(5): | |
| start = torch.cuda.Event(enable_timing=True) | |
| end = torch.cuda.Event(enable_timing=True) | |
| start.record() | |
| for _ in range(50): | |
| g.replay() | |
| end.record() | |
| end.synchronize() | |
| samples.append(start.elapsed_time(end) / 800) | |
| results.append( | |
| dict( | |
| m=m, | |
| n=n, | |
| k=k, | |
| ms=statistics.median(samples), | |
| samples=samples, | |
| sha256=hashlib.sha256(out.cpu().view(torch.uint8).numpy().tobytes()).hexdigest(), | |
| ) | |
| ) | |
| print(results[-1], flush=True) | |
| name = "legacy" if os.getenv("ORBITQUANT_W4A4_DISABLE_GEMV") == "1" else "gemv" | |
| Path("orbitquant-" + name + ".json").write_text(json.dumps(results, indent=2)) | |