File size: 1,445 Bytes
60e7bb5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from types import SimpleNamespace

import pytest

from grimboost.targets.hf import HFTarget


@pytest.mark.parametrize('mode,budget,enabled', [
    ('auto', 256, False), ('auto', 8191, False), ('auto', 8192, True),
    ('off', 50000, False), ('on', 256, True),
])
def test_optimization_dispatch_uses_requested_generation_budget(mode, budget, enabled):
    calls = []
    target = HFTarget.__new__(HFTarget)
    target.decode_optimizations = mode
    target.decode_optimizations_fallback = None
    target._decode = SimpleNamespace(enable_optimizations=lambda: calls.append(True))
    target.prepare_generation(budget)
    assert bool(calls) is enabled


def test_auto_optimization_falls_back_once_on_unsupported_configuration():
    calls = []
    def unsupported():
        calls.append(True)
        raise ValueError('unsupported quantization kernel')
    target = HFTarget.__new__(HFTarget)
    target.decode_optimizations = 'auto'
    target.decode_optimizations_fallback = None
    target._decode = SimpleNamespace(enable_optimizations=unsupported)
    target.prepare_generation(50000)
    target.prepare_generation(50000)
    assert calls == [True]
    assert target.decode_optimizations_fallback == 'unsupported quantization kernel'
    target.decode_optimizations = 'on'
    target.decode_optimizations_fallback = None
    with pytest.raises(ValueError, match='unsupported quantization kernel'):
        target.prepare_generation(50000)