Documentação

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.