File size: 1,146 Bytes
a0270e2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
40
41
42
43
44
"""
Unified Engine Router for Parallel Constrained Decoding.
Automatically selects MLX backend on Apple Silicon macOS,
or PyTorch / CUDA backend on Linux, Docker, and Hugging Face Spaces.
"""

import os
import platform

USE_MLX = False
if platform.system() == "Darwin" and os.environ.get("BACKEND", "").lower() != "torch":
    try:
        import mlx.core as mx
        import mlx_lm
        USE_MLX = True
    except Exception:
        USE_MLX = False

if USE_MLX:
    from core.engine_mlx import (
        get_engine,
        run_parallel_generation,
        run_naive_generation,
        stream_naive_generation,
        run_rlcd_generation,
    )
else:
    from core.engine_torch import (
        get_torch_engine as get_engine,
        run_parallel_generation_torch as run_parallel_generation,
        run_naive_generation_torch as run_naive_generation,
        stream_naive_generation_torch as stream_naive_generation,
    )
    run_rlcd_generation = run_parallel_generation

__all__ = [
    "get_engine",
    "run_parallel_generation",
    "run_naive_generation",
    "stream_naive_generation",
    "run_rlcd_generation",
    "USE_MLX",
]