Skip to content

Commit 8bd4332

Browse files
authored
Merge pull request #1 from sniper35/fix-e8m0-scale-init
Initialize E8M0 FP8 scale parameters
2 parents b633abc + 15c2eef commit 8bd4332

2 files changed

Lines changed: 35 additions & 0 deletions

File tree

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3+
4+
import pytest
5+
import torch
6+
7+
import vllm.model_executor.parameter as parameter
8+
from vllm.model_executor.layers.quantization.utils.fp8_utils import (
9+
create_fp8_scale_parameter,
10+
)
11+
from vllm.model_executor.parameter import BlockQuantScaleParameter
12+
13+
14+
@pytest.mark.skipif(
15+
not hasattr(torch, "float8_e8m0fnu"),
16+
reason="torch does not expose float8_e8m0fnu",
17+
)
18+
def test_create_fp8_scale_parameter_initializes_e8m0(monkeypatch):
19+
monkeypatch.setattr(parameter, "get_tensor_model_parallel_rank", lambda: 0)
20+
monkeypatch.setattr(parameter, "get_tensor_model_parallel_world_size", lambda: 1)
21+
22+
scale = create_fp8_scale_parameter(
23+
BlockQuantScaleParameter,
24+
output_partition_sizes=[128],
25+
input_size_per_partition=128,
26+
block_size=[128, 128],
27+
weight_loader=None,
28+
scale_dtype=torch.float8_e8m0fnu,
29+
)
30+
31+
assert scale.dtype == torch.float8_e8m0fnu
32+
raw_scale = scale.data.view(torch.uint8)
33+
assert torch.equal(raw_scale, torch.zeros_like(raw_scale))

vllm/model_executor/layers/quantization/utils/fp8_utils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1231,6 +1231,8 @@ def create_fp8_scale_parameter(
12311231

12321232
if dtype == torch.float32:
12331233
scale[:] = torch.finfo(torch.float32).min
1234+
elif dtype == getattr(torch, "float8_e8m0fnu", None):
1235+
scale[:] = 0
12341236
set_weight_attrs(scale, {"scale_type": "weight_scale"})
12351237
return scale
12361238

0 commit comments

Comments
 (0)