Установка, скачивание и типизированные решения
Laya-CoreML работает на Apple Silicon с macOS 15+ и Python 3.11–3.13. Локальные проверки выпуска используют M3 Max / macOS 27.2. Более старые выпуски macOS и развёртывание на iOS здесь не тестировались. Экспортированные ML Programs нацелены на macOS 15 / iOS 18.
python -m pip install laya-coreml
# Terminal demo and recording renderer:
python -m pip install 'laya-coreml[demo]'
Инференс устанавливает Core ML Tools, NumPy, Tokenizers, Safetensors и Hugging Face
Hub. Он не требует PyTorch, Transformers или MLX. Опциональное дополнение [convert]
устанавливает PyTorch для экспорта исходных контрольных точек.
Выберите модель
Пакет Hugging Face под aac6fef/ |
Устройство по умолчанию | Общая ёмкость входа | Батч / варианты | Назначение |
|---|---|---|---|---|
| laya-coreml | CPU + GPU | 512 токенов | 1 / 32 | Английская Laya, 421M |
| laya-multilingual-coreml | CPU + GPU | 1024 токена | 1 / 32 | Универсальная многоязычная, 322M |
| laya-typed-decisions-coreml | CPU + GPU | 1024 токена | 1 / 32 | Upstream-контрольная точка typed-decisions |
| laya-multilingual-coreml-snake | CPU + GPU | 64 токена | 3 / 4 | Батчевые компактные промпты Snake |
| laya-multilingual-coreml-ane | CPU + ANE | 96 токенов | 1 / 32 | Короткие решения, тело FP16 |
| laya-multilingual-coreml-ane-w8 | CPU + ANE | 96 токенов | 1 / 32 | Приближённые веса палитры W8, вычисления FP16 |
Пакеты ANE включают собственные веса эмбеддингов/действий хоста и неизменное тело Core ML. Им не нужен каталог исходной контрольной точки. Ёмкость в 96 токенов включает вопрос, описания вариантов, специальные маркеры и состояние. Эти короткие экспорты отклоняют запрос, который не помещается. Универсальные модели сохраняют upstream-усечение состояния на своём полном лимите контекста контрольной точки; описания вариантов также используют исходный бюджет префикса вопроса.
Python API
import laya_coreml as laya
agent = laya.load("aac6fef/laya-multilingual-coreml")
result = agent.predict(
"The customer asks for a refund of a duplicate payment.",
{
"department": {
"type": "choice",
"instructions": "Which department should handle this request?",
"criteria": {
"billing": "Payments, invoices, refunds, and duplicate charges.",
"technical": "Broken features, errors, and product troubleshooting.",
"sales": "Pricing, upgrades, and new purchases.",
},
},
"urgency": {
"type": "score",
"instructions": "How urgent is the request?",
"criteria": ["low", "medium", "high"],
},
"refund": {
"type": "noul",
"instructions": "Does the customer request a refund?",
},
},
)
print(result["answers"])
print(result["usage"]) # output_tokens is always 0
choice возвращает выбранную метку и вероятность для каждой метки. score
возвращает ожидаемый индекс категории с нулевой базой, его легенду и вероятности.
noul возвращает вероятность истины. Ответы также включают upstream-поля уверенности
и вероятности головы действий. Эти оценки могут быть неверными; валидация библиотеки
измеряет точность конвертации, а не точность приложения.
predict и system_one — синонимы. Состояние-словарь сериализуется с использованием
исходных соглашений ввода. Вопросы обрабатываются в порядке вставки. Большинство
экспортов используют батч один; поэтому несколько вопросов требуют нескольких вызовов
модели. Экспорт Snake GPU батчит до трёх. Двунаправленный энкодер не
кэширует контекстное состояние между разными вопросами.
Скачайте один раз, затем работайте офлайн
hf download aac6fef/laya-multilingual-coreml-ane --local-dir models/ane
agent = laya.load("./models/ane", local_files_only=True)
# Or use a previously downloaded shared Hub cache:
agent = laya.load("aac6fef/laya-multilingual-coreml-ane", local_files_only=True)
Удалённые ID скачиваются до инициализации, если только не указано local_files_only=True.
Последующее предсказание использует только локальные массивы и файлы. Чтобы воспроизвести точный
удалённый снимок, передайте revision="<Hub commit SHA>"; ID коммитов выпуска есть в
RELEASE.md. Терминальная игра всегда использует локальные/кешированные веса и
завершается с командой скачивания, когда их нет.
Общий кэш Hugging Face хранит файлы моделей как символические ссылки. На тестируемом
выпуске macOS Core ML может скопировать эти ссылки во временную скомпилированную модель
и потерять файл весов. Загрузчик автоматически материализует именно пакет Core
ML как обычные файлы в ~/.cache/laya-coreml/packages/, проверяет его
хеш содержимого и переиспользует эту копию. Задайте LAYA_COREML_CACHE, чтобы изменить корень
кэша. Это использует дополнительное место на диске, а не дополнительные скачивания модели. Каталог,
созданный через hf download --local-dir, уже содержит обычные файлы и не нуждается в копировании.
Загрузчик распознаёт формат пакета и выбирает его единицы вычислений по умолчанию.
Переопределите через compute_units="cpu_gpu", "cpu_ne", "cpu" или "all" для
явного эксперимента. cpu_ne допускает работу CPU и работу ANE; он не гарантирует,
что каждая операция исполняется на ANE. Выбор его для обычного экспорта SDPA
не превращает этот экспорт в выделенный граф ANE.
CLI
Сохраните словарь вопросов в questions.json, затем выполните:
laya-coreml predict ./models/ane --offline \
--state 'The customer requests a refund.' --questions questions.json
laya-coreml predict принимает локальный каталог или ID из Hub, опциональный
--revision и --compute-units. --offline предотвращает доступ к Hub.
Конвертация из исходников
Для обычного пути Core ML:
pip install 'laya-coreml[convert]'
laya-coreml convert laya-multilingual models/custom-multilingual
Исследовательский экспортёр ANE находится в Git-копии, вне колеса инференса:
git clone https://github.com/mizorewww/laya-coreml
cd laya-coreml
pip install -e '.[convert,dev,research]'
python -m experiments.ane_engineering.probe --source laya-multilingual \
--kind body --length 96 --output models/ane96
Соответствующие рабочие процессы см. в находках по конвертации, инженерии ANE и управлении Snake и записи.