Instale, baixe e faça decisões tipadas
O Laya-CoreML roda em Apple Silicon com macOS 15+ e Python 3.11–3.13. As verificações locais de lançamento usam M3 Max / macOS 27.2. Versões mais antigas do macOS e a implantação no iOS não foram testadas aqui. Os ML Programs exportados têm como alvo macOS 15 / iOS 18.
python -m pip install laya-coreml
# Terminal demo and recording renderer:
python -m pip install 'laya-coreml[demo]'
A inferência instala Core ML Tools, NumPy, Tokenizers, Safetensors e o Hugging Face
Hub. Não exige PyTorch, Transformers nem MLX. O extra opcional [convert]
instala o PyTorch para exportar os checkpoints originais.
Selecione um modelo
Pacote Hugging Face em aac6fef/ |
Dispositivo padrão | Capacidade total de entrada | Batch / opções | Uso pretendido |
|---|---|---|---|---|
| laya-coreml | CPU + GPU | 512 tokens | 1 / 32 | Laya em inglês, 421M |
| laya-multilingual-coreml | CPU + GPU | 1024 tokens | 1 / 32 | Multilíngue geral, 322M |
| laya-typed-decisions-coreml | CPU + GPU | 1024 tokens | 1 / 32 | Checkpoint typed-decisions do upstream |
| laya-multilingual-coreml-snake | CPU + GPU | 64 tokens | 3 / 4 | Prompts compactos de Snake em lote |
| laya-multilingual-coreml-ane | CPU + ANE | 96 tokens | 1 / 32 | Decisões curtas, corpo FP16 |
| laya-multilingual-coreml-ane-w8 | CPU + ANE | 96 tokens | 1 / 32 | Pesos de paleta W8 aproximados, computação FP16 |
Os pacotes ANE incluem seus próprios pesos de embedding/ação do host e o corpo Core ML inalterado. Eles não precisam de um diretório de checkpoint original. A capacidade de 96 tokens inclui a pergunta, as descrições das opções, os marcadores especiais e o estado. Essas exportações curtas rejeitam uma requisição que não cabe. Os modelos de propósito geral mantêm o truncamento de estado do upstream em seu limite completo de contexto do checkpoint; as descrições das opções também usam o orçamento original de prefixo de pergunta.
API Python
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 retorna um rótulo selecionado e uma probabilidade para cada rótulo. score
retorna o índice de categoria esperado, com base em zero, sua legenda e as probabilidades.
noul retorna a probabilidade de verdadeiro. As respostas também incluem campos de confiança
do upstream e de probabilidade do action-head. Essas estimativas podem estar erradas; a
validação da biblioteca mede a fidelidade de conversão, não a acurácia da aplicação.
predict e system_one são aliases. Um estado em dicionário é serializado usando as
convenções de entrada originais. As perguntas são processadas na ordem de inserção. A maioria
das exportações usa batch um; várias perguntas, portanto, exigem várias chamadas ao modelo.
A exportação Snake GPU faz batching de até três. O encoder bidirecional não
faz cache do estado contextual entre perguntas diferentes.
Baixe uma vez e depois trabalhe offline
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)
IDs remotos baixam antes da inicialização, a menos que local_files_only=True.
A predição seguinte usa apenas arrays e arquivos locais. Para reproduzir um snapshot
remoto exato, passe revision="<Hub commit SHA>"; os IDs de commit de lançamento estão em
RELEASE.md. O jogo de terminal sempre usa pesos locais/em cache e
falha com um comando de download quando eles estão ausentes.
O cache compartilhado do Hugging Face armazena os arquivos do modelo como links simbólicos. Na
versão testada do macOS, o Core ML pode copiar esses links para seu modelo compilado temporário
e perder o arquivo de pesos. O loader materializa automaticamente apenas o pacote Core
ML como arquivos regulares em ~/.cache/laya-coreml/packages/, verifica seu
hash de conteúdo e reutiliza essa cópia. Defina LAYA_COREML_CACHE para mudar essa raiz
de cache. Isso usa espaço extra em disco, não downloads extras de modelo. Um diretório criado
com hf download --local-dir já contém arquivos regulares e não precisa de cópia.
O loader reconhece o formato do pacote e seleciona suas compute units padrão.
Substitua usando compute_units="cpu_gpu", "cpu_ne", "cpu" ou "all" para um
experimento explícito. cpu_ne permite trabalho na CPU e trabalho no ANE; não garante
que toda operação execute no ANE. Escolhê-lo para a exportação SDPA comum não
transforma essa exportação no grafo ANE dedicado.
CLI
Salve o dicionário de perguntas em questions.json e execute:
laya-coreml predict ./models/ane --offline \
--state 'The customer requests a refund.' --questions questions.json
laya-coreml predict aceita um diretório local ou um ID do Hub, um --revision
opcional e --compute-units. --offline impede o acesso ao Hub.
Converta a partir do código-fonte
Para o caminho Core ML comum:
pip install 'laya-coreml[convert]'
laya-coreml convert laya-multilingual models/custom-multilingual
O exportador de pesquisa do ANE fica no checkout do Git, fora da wheel de inferência:
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
Consulte descobertas de conversão, engenharia do ANE e controles e gravação do Snake para os fluxos de trabalho correspondentes.