Model reference · open weights
Meta-Llama-3.1 is an open-weight language model from Meta. Meta-Llama-3.1-70B-Instruct-FP8 (FP8) weighs 72.7 GB; the smallest configuration that runs it is A100 80 GB.
For self-hosting, compare this build's requirements below with the GPU you plan to rent.
Summary of the RedHatAI/Meta-Llama-3.1-70B-Instruct-FP8 model card, 2026-10-01
What it is
| Released by | Meta |
|---|---|
| Released | 2024-07-23 |
| Parameters | 70.6B |
| VRAM | 72.7 GB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory | |
|---|---|---|---|---|
| 8K each | 32K each | |||
| RTX 3060 12 GB … L40S 48 GB 6 smaller cards | ||||
| A100 80 GB FP8 without its speed-up here | 1 | 13K | 78.2 GB | |
| H100 80 GB | 78.1 GB | |||
| RTX PRO 6000 Blackwell 96 GB | 5 | 1 | 46K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 10 | 2 | 86K | 107 GB |
| H200 141 GB | 22 | 5 | all 128K | 138 GB |
| B200 180 GB | 35 | 8 | all 128K | 176 GB |
| 4× RTX 4090 24 GB tensor parallel | 6 | 1 | 50K | 23.4 GB a card |
| 4× RTX 3090 24 GB tensor parallel · FP8 without its speed-up here | 6 | 1 | 51K | 23.4 GB a card |
| 4× RTX 5090 32 GB tensor parallel | 17 | 4 | all 128K | 31.0 GB a card |
| 2× H100 80 GB tensor parallel | 26 | 6 | all 128K | 78.1 GB a card |
| 2× A100 80 GB tensor parallel · FP8 without its speed-up here | 30 | 7 | all 128K | 78.2 GB a card |
| 4× L40S 48 GB tensor parallel | 37 | 9 | all 128K | 44.0 GB a card |
| 2× RTX PRO 6000 Blackwell 96 GB tensor parallel | 38 | 9 | all 128K | 93.8 GB a card |
| Requests at once | 8K tokens each | 32K tokens each |
|---|---|---|
| 1 | 76.3 GB | 84.3 GB |
| 5 | 87.0 GB | 127 GB |
| 8 | 95.1 GB | 159 GB |
| 16 | 117 GB | 245 GB |
| 32 | 159 GB | 417 GB |
| 64 | 245 GB | 761 GB |
One card, with vLLM's small-card settings.
Builds
| Build | Params | Precision | Weights | Smallest setup |
|---|---|---|---|---|
| Meta-Llama-3.1-70B-Instruct-FP8 (above) ↗ packaged by RedHatAI |
70.6B | FP8 | 72.7 GB | A100 80 GB |
| Meta-Llama-3.1-8B-Instruct-FP8 ↗ packaged by RedHatAI |
8.0B | FP8 | 9.1 GB | RTX 3060 12 GB |
From the model card
Quantized version of Meta-Llama-3.1-70B-Instruct. It achieves an average score of 84.29 on the OpenLLM benchmark (version 1), whereas the unquantized model achieves 84.40.
This model was obtained by quantizing the weights and activations of Meta-Llama-3.1-70B-Instruct to FP8 data type. This optimization reduces the number of bits per parameter from 16 to 8, reducing the disk size and GPU memory requirements by approximately 50%.
Only the weights and activations of the linear operators within transformers blocks are quantized. Symmetric per-tensor quantization is applied, in which a single linear scaling maps the FP8 representations of the quantized weights and activations. LLM Compressor is used for quantization with 512 sequences of UltraChat.
This model can be deployed efficiently using the vLLM backend, as shown in the example below.
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
model_id = "neuralmagic/Meta-Llama-3.1-70B-Instruct-FP8"
number_gpus = 2
sampling_params = SamplingParams(temperature=0.6, top_p=0.9, max_tokens=256)
tokenizer = AutoTokenizer.from_pretrained(model_id)
messages = [
{"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
{"role": "user", "content": "Who are you?"},
]
prompts = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
llm = LLM(model=model_id, tensor_parallel_size=number_gpus)
outputs = llm.generate(prompts, sampling_params)
generated_text = outputs[0].outputs[0].text
print(generated_text)
vLLM aslo supports OpenAI-compatible serving. See the documentation for more details.
This model was created by applying LLM Compressor with calibration samples from UltraChat, as presented in the code snipet below.
import torch
from datasets import load_dataset
from transformers import AutoTokenizer
from llmcompressor.transformers import SparseAutoModelForCausalLM, oneshot
from llmcompressor.transformers.compression.helpers import (
calculate_offload_device_map,
custom_offload_device_map,
)
recipe = """
quant_stage:
quant_modifiers:
QuantizationModifier:
ignore: ["lm_head"]
config_groups:
group_0:
weights:
num_bits: 8
type: float
strategy: tensor
dynamic: false
symmetric: true
input_activations:
num_bits: 8
type: float
strategy: tensor
dynamic: false
symmetric: true
targets: ["Linear"]
"""
model_stub = "meta-llama/Meta-Llama-3.1-70B-Instruct"
model_name = model_stub.split("/")[-1]
device_map = calculate_offload_device_map(
model_stub, reserve_for_hessians=False, num_gpus=2, torch_dtype="auto"
)
model = SparseAutoModelForCausalLM.from_pretrained(
model_stub, torch_dtype="auto", device_map=device_map
)
tokenizer = AutoTokenizer.from_pretrained(model_stub)
output_dir = f"./{model_name}-FP8"
DATASET_ID = "HuggingFaceH4/ultrachat_200k"
DATASET_SPLIT = "train_sft"
NUM_CALIBRATION_SAMPLES = 512
MAX_SEQUENCE_LENGTH = 4096
ds = load_dataset(DATASET_ID, split=DATASET_SPLIT)
ds = ds.shuffle(seed=42).select(range(NUM_CALIBRATION_SAMPLES))
def preprocess(example):
return {
"text": tokenizer.apply_chat_template(
example["messages"],
tokenize=False,
)
}
ds = ds.map(preprocess)
def tokenize(sample):
return tokenizer(
sample["text"],
padding=False,
max_length=MAX_SEQUENCE_LENGTH,
truncation=True,
add_special_tokens=False,
)
ds = ds.map(tokenize, remove_columns=ds.column_names)
oneshot(
model=model,
output_dir=output_dir,
dataset=ds,
recipe=recipe,
max_seq_length=MAX_SEQUENCE_LENGTH,
num_calibration_samples=NUM_CALIBRATION_SAMPLES,
save_compressed=True,
)
The model was evaluated on MMLU, ARC-Challenge, GSM-8K, Hellaswag, Winogrande and TruthfulQA. Evaluation was conducted using the Neural Magic fork of lm-evaluation-harness (branch llama_3.1_instruct) and the vLLM engine. This version of the lm-evaluation-harness includes versions of ARC-Challenge, GSM-8K, MMLU, and MMLU-cot that match the prompting style of Meta-Llama-3.1-Instruct-evals.
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.