test_weight_utils.py 2.03 KB
Newer Older
1
# SPDX-License-Identifier: Apache-2.0
2
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3

4
import os
5
import tempfile
6
7
8

import huggingface_hub.constants
import pytest
9
from huggingface_hub.utils import LocalEntryNotFoundError
10

11
from vllm.model_executor.model_loader.weight_utils import (
12
13
14
    download_weights_from_hf,
    enable_hf_transfer,
)
15
16
17
18
19


def test_hf_transfer_auto_activation():
    if "HF_HUB_ENABLE_HF_TRANSFER" in os.environ:
        # in case it is already set, we can't test the auto activation
20
        pytest.skip("HF_HUB_ENABLE_HF_TRANSFER is set, can't test auto activation")
21
22
23
24
    enable_hf_transfer()
    try:
        # enable hf hub transfer if available
        import hf_transfer  # type: ignore # noqa
25

omahs's avatar
omahs committed
26
        HF_TRANSFER_ACTIVE = True
27
    except ImportError:
omahs's avatar
omahs committed
28
        HF_TRANSFER_ACTIVE = False
29
    assert huggingface_hub.constants.HF_HUB_ENABLE_HF_TRANSFER == HF_TRANSFER_ACTIVE
30
31


32
33
34
35
36
37
def test_download_weights_from_hf():
    with tempfile.TemporaryDirectory() as tmpdir:
        # assert LocalEntryNotFoundError error is thrown
        # if offline is set and model is not cached
        huggingface_hub.constants.HF_HUB_OFFLINE = True
        with pytest.raises(LocalEntryNotFoundError):
38
39
40
41
42
            download_weights_from_hf(
                "facebook/opt-125m",
                allow_patterns=["*.safetensors", "*.bin"],
                cache_dir=tmpdir,
            )
43
44
45

        # download the model
        huggingface_hub.constants.HF_HUB_OFFLINE = False
46
47
48
49
50
        download_weights_from_hf(
            "facebook/opt-125m",
            allow_patterns=["*.safetensors", "*.bin"],
            cache_dir=tmpdir,
        )
51
52
53

        # now it should work offline
        huggingface_hub.constants.HF_HUB_OFFLINE = True
54
55
56
57
58
59
60
61
        assert (
            download_weights_from_hf(
                "facebook/opt-125m",
                allow_patterns=["*.safetensors", "*.bin"],
                cache_dir=tmpdir,
            )
            is not None
        )
62
63


64
65
if __name__ == "__main__":
    test_hf_transfer_auto_activation()
66
    test_download_weights_from_hf()