Installieren, herunterladen und typisierte Entscheidungen treffen
Laya-CoreML läuft auf Apple Silicon mit macOS 15+ und Python 3.11–3.13. Die lokalen Release-Prüfungen verwenden M3 Max / macOS 27.2. Ältere macOS-Versionen und ein iOS-Deployment wurden hier nicht getestet. Exportierte ML Programs zielen auf macOS 15 / iOS 18.
python -m pip install laya-coreml
# Terminal demo and recording renderer:
python -m pip install 'laya-coreml[demo]'
Die Inferenz installiert Core ML Tools, NumPy, Tokenizers, Safetensors und Hugging Face Hub.
Sie benötigt kein PyTorch, Transformers oder MLX. Das optionale [convert]-Extra installiert
PyTorch zum Exportieren der ursprünglichen Checkpoints.
Ein Modell auswählen
Hugging-Face-Bundle unter aac6fef/ |
Gerätestandard | Gesamte Eingabekapazität | Batch / Optionen | Verwendungszweck |
|---|---|---|---|---|
| laya-coreml | CPU + GPU | 512 Tokens | 1 / 32 | Englisches Laya, 421M |
| laya-multilingual-coreml | CPU + GPU | 1024 Tokens | 1 / 32 | Allgemeines mehrsprachiges Modell, 322M |
| laya-typed-decisions-coreml | CPU + GPU | 1024 Tokens | 1 / 32 | Upstream-Typed-Decisions-Checkpoint |
| laya-multilingual-coreml-snake | CPU + GPU | 64 Tokens | 3 / 4 | Gebündelte kompakte Snake-Prompts |
| laya-multilingual-coreml-ane | CPU + ANE | 96 Tokens | 1 / 32 | Kurze Entscheidungen, FP16-Body |
| laya-multilingual-coreml-ane-w8 | CPU + ANE | 96 Tokens | 1 / 32 | Approximative W8-Palettengewichte, FP16-Berechnung |
Die ANE-Pakete enthalten ihre eigenen Host-Embedding-/Action-Gewichte und den unveränderten Core ML-Body. Sie benötigen kein ursprüngliches Checkpoint-Verzeichnis. Die 96-Token-Kapazität umfasst die Frage, Optionsbeschreibungen, spezielle Marker und den Zustand. Diese kurzen Exporte weisen eine Anfrage zurück, die nicht passt. Die Allzweckmodelle behalten die Upstream-Zustandstrunkierung bei ihrem vollen Checkpoint-Kontextlimit; Optionsbeschreibungen verwenden außerdem das ursprüngliche Frage-Präfix-Budget.
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 gibt ein ausgewähltes Label und eine Wahrscheinlichkeit für jedes Label zurück. score
gibt den erwarteten nullbasierten Kategorieindex, seine Legende und Wahrscheinlichkeiten zurück.
noul gibt die Wahrscheinlichkeit für true zurück. Antworten enthalten außerdem
Upstream-Konfidenz- und Action-Head-Wahrscheinlichkeitsfelder. Diese Schätzungen können falsch
sein; die Validierung der Bibliothek misst Konvertierungstreue, nicht Anwendungsgenauigkeit.
predict und system_one sind Aliase. Ein Dictionary-Zustand wird mit den ursprünglichen
Eingabekonventionen serialisiert. Fragen werden in Einfügereihenfolge verarbeitet. Die meisten
Exporte verwenden Batch eins; mehrere Fragen erfordern daher mehrere Modellaufrufe. Der
Snake-GPU-Export bündelt bis zu drei. Der bidirektionale Encoder cached keinen kontextuellen
Zustand über verschiedene Fragen hinweg.
Einmal herunterladen, dann offline arbeiten
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)
Remote-IDs werden vor der Initialisierung heruntergeladen, sofern nicht local_files_only=True.
Nachfolgende Vorhersagen verwenden nur lokale Arrays und Dateien. Um einen exakten
Remote-Snapshot zu reproduzieren, übergib revision="<Hub commit SHA>"; Release-Commit-IDs
stehen in RELEASE.md. Das Terminal-Spiel verwendet immer lokale/gecachte Gewichte
und schlägt mit einem Download-Befehl fehl, wenn sie fehlen.
Der gemeinsame Cache von Hugging Face speichert Modelldateien als symbolische Links. In der
getesteten macOS-Version kann Core ML diese Links in sein temporär kompiliertes Modell kopieren
und die Weight-Datei verlieren. Der Loader materialisiert automatisch nur das Core ML-Paket als
reguläre Dateien unter ~/.cache/laya-coreml/packages/, verifiziert seinen Inhalts-Hash und
verwendet diese Kopie wieder. Setze LAYA_COREML_CACHE, um dieses Cache-Root zu ändern. Das
beansprucht zusätzlichen Speicherplatz, nicht zusätzliche Modell-Downloads. Ein mit
hf download --local-dir erstelltes Verzeichnis enthält bereits reguläre Dateien und benötigt
keine Kopie.
Der Loader erkennt das Paketformat und wählt seine Standard-Compute-Units. Überschreibe mit
compute_units="cpu_gpu", "cpu_ne", "cpu" oder "all" für ein explizites Experiment.
cpu_ne erlaubt CPU-Arbeit und ANE-Arbeit; es garantiert nicht, dass jeder Operator auf ANE
ausgeführt wird. Wählt man es für den gewöhnlichen SDPA-Export, wird dieser Export nicht zum
dedizierten ANE-Graphen.
CLI
Speichere das Frage-Dictionary in questions.json und führe dann aus:
laya-coreml predict ./models/ane --offline \
--state 'The customer requests a refund.' --questions questions.json
laya-coreml predict akzeptiert ein lokales Verzeichnis oder eine Hub-ID, ein optionales
--revision und --compute-units. --offline verhindert den Hub-Zugriff.
Aus dem Quellcode konvertieren
Für den gewöhnlichen Core ML-Pfad:
pip install 'laya-coreml[convert]'
laya-coreml convert laya-multilingual models/custom-multilingual
Der ANE-Forschungsexporter liegt im Git-Checkout, außerhalb des Inferenz-Wheels:
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
Siehe Konvertierungsbefunde, ANE-Engineering und Snake-Steuerung und -Aufzeichnung für die entsprechenden Workflows.