Instalar, descargar y tomar decisiones tipadas
Laya-CoreML se ejecuta en Apple Silicon con macOS 15+ y Python 3.11–3.13. Las comprobaciones locales de la versión usan un M3 Max / macOS 27.2. Las versiones anteriores de macOS y el despliegue en iOS no se han probado aquí. Los ML Program exportados tienen como destino macOS 15 / iOS 18.
python -m pip install laya-coreml
# Terminal demo and recording renderer:
python -m pip install 'laya-coreml[demo]'
La inferencia instala Core ML Tools, NumPy, Tokenizers, Safetensors y Hugging Face
Hub. No requiere PyTorch, Transformers ni MLX. El extra opcional [convert]
instala PyTorch para exportar los checkpoints originales.
Seleccionar un modelo
Paquete de Hugging Face bajo aac6fef/ |
Dispositivo por defecto | Capacidad total de entrada | Lote / opciones | Uso previsto |
|---|---|---|---|---|
| laya-coreml | CPU + GPU | 512 tokens | 1 / 32 | Laya en inglés, 421M |
| laya-multilingual-coreml | CPU + GPU | 1024 tokens | 1 / 32 | Multilingüe de propósito general, 322M |
| laya-typed-decisions-coreml | CPU + GPU | 1024 tokens | 1 / 32 | Checkpoint de typed-decisions del upstream |
| laya-multilingual-coreml-snake | CPU + GPU | 64 tokens | 3 / 4 | Prompts compactos de Snake procesados por lotes |
| laya-multilingual-coreml-ane | CPU + ANE | 96 tokens | 1 / 32 | Decisiones cortas, cuerpo FP16 |
| laya-multilingual-coreml-ane-w8 | CPU + ANE | 96 tokens | 1 / 32 | Pesos de paleta W8 aproximados, cómputo FP16 |
Los paquetes ANE incluyen sus propios pesos de embedding/acción del host y el cuerpo de Core ML sin cambios. No necesitan un directorio de checkpoint original. La capacidad de 96 tokens incluye la pregunta, las descripciones de opciones, los marcadores especiales y el estado. Estas exportaciones cortas rechazan una solicitud que no cabe. Los modelos de propósito general conservan el truncamiento de estado del upstream en su límite completo de contexto del checkpoint; las descripciones de opciones también usan el presupuesto original de prefijo de pregunta.
API de 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 devuelve una etiqueta seleccionada y una probabilidad para cada
etiqueta. score devuelve el índice de categoría esperado con base cero, su
leyenda y las probabilidades. noul devuelve la probabilidad de verdadero. Las
respuestas también incluyen la confianza del upstream y campos de probabilidad de
la cabeza de acción. Estas estimaciones pueden ser erróneas; la validación de la
biblioteca mide la fidelidad de conversión, no la precisión de la aplicación.
predict y system_one son alias. Un estado en forma de diccionario se serializa
usando las convenciones de entrada originales. Las preguntas se procesan en orden
de inserción. La mayoría de las exportaciones usan lote uno; por tanto, varias
preguntas requieren varias llamadas al modelo. La exportación Snake GPU procesa
por lotes hasta tres. El codificador bidireccional no cachea estado contextual
entre preguntas distintas.
Descarga una vez y luego trabaja sin conexión
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)
Los IDs remotos se descargan antes de la inicialización a menos que
local_files_only=True. Las predicciones posteriores usan solo arrays y archivos
locales. Para reproducir una instantánea remota exacta, pasa
revision="<Hub commit SHA>"; los IDs de commit de la versión están en
RELEASE.md. El juego de terminal usa siempre pesos locales/en caché y
falla con un comando de descarga cuando faltan.
La caché compartida de Hugging Face almacena los archivos del modelo como enlaces
simbólicos. En la versión de macOS probada, Core ML puede copiar esos enlaces a su
modelo compilado temporal y perder el archivo de pesos. El cargador materializa
automáticamente solo el paquete Core ML como archivos regulares bajo
~/.cache/laya-coreml/packages/, verifica su hash de contenido y reutiliza esa
copia. Define LAYA_COREML_CACHE para cambiar esta raíz de caché. Esto usa espacio
de disco adicional, no descargas de modelo adicionales. Un directorio creado con
hf download --local-dir ya contiene archivos regulares y no necesita copia.
El cargador reconoce el formato del paquete y selecciona sus unidades de cómputo
por defecto. Sobrescríbelo con compute_units="cpu_gpu", "cpu_ne", "cpu" o
"all" para un experimento explícito. cpu_ne permite trabajo en CPU y trabajo
en ANE; no garantiza que todas las operaciones se ejecuten en ANE. Elegirlo para
la exportación ordinaria con SDPA no convierte esa exportación en el grafo ANE
dedicado.
CLI
Guarda el diccionario de preguntas en questions.json y luego ejecuta:
laya-coreml predict ./models/ane --offline \
--state 'The customer requests a refund.' --questions questions.json
laya-coreml predict acepta un directorio local o un ID del Hub, un --revision
opcional y --compute-units. --offline impide el acceso al Hub.
Convertir desde el código fuente
Para la ruta ordinaria de Core ML:
pip install 'laya-coreml[convert]'
laya-coreml convert laya-multilingual models/custom-multilingual
El exportador de investigación de ANE está en el checkout de Git, fuera de la wheel de inferencia:
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
Consulta hallazgos de conversión, ingeniería de ANE y controles y grabación de Snake para los flujos de trabajo correspondientes.