
【免费下载链接】laya-coremlLocal Laya typed decisions on Apple Core ML and Neural Engine. Validated ports, ~5 ms short decisions on M3 Max, reproducible speed and energy benchmarks.项目地址https://gitcode.com/gh_mirrors/la/laya-coreml点击查看免费下载Laya-CoreML 是一个面向 Apple Silicon 的开源推理项目把开放权重的 Laya 决策模型移植到 Core ML 与 Neural Engine 上实现零输出 token的本地 typed decisions直接返回choice/score/noul概率不做自回归文本生成。本文将带你完整走一遍安装演示、Python/CLI 调用、校准温度钳制、M3 Max 实测基准与六个可下载模型包的选择并结合仓库源码如 laya_coreml/agent.py、laya_coreml/ane.py、laya_coreml/result.py深入拆解其加载、推理与能效优化的实现细节。读完你不仅能立刻在本机跑起来还能理解 ANE 快速路径与普通 SDPA 导出的本质区别、如何解读性能数据边界。上面的贪吃蛇由真实 Core ML 推理驱动屏幕上显示方向概率、分数、蛇长、延迟和安全层接管次数GIF 保持录制时的1× 速度。代码提供确定性的路径特征和可见的循环安全层模型负责给出概率——这是理解本项目的第一个入口Core ML 只是推理后端游戏逻辑与安全层由 Python 代码确定性给出。一、项目定位本地、开放权重、零输出 token项目的核心承诺可以浓缩为一句话在 Apple Silicon 上运行开放权重的决策模型使用 Core ML、Neural Engine且不生成任何输出 token参见 README.zh-CN.md。这与常规提示词 → 逐 token 生成文本的大模型推理范式有本质区别输入是结构化问题一段状态文本 若干问题定义choice/score/noul输出是概率向量直接给出每个选项的概率、期望得分或布尔概率附带置信度与 action 概率无解码循环usage[output_tokens]恒为 0result.py 中system_one返回的 usage 字段明确写死了这一点运行时零重型依赖推理路径不需要 PyTorch、Transformers 或 MLX。从 pyproject.toml 可以看到运行时依赖仅为coremltools、numpy、tokenizers、huggingface-hub、safetensorsPyTorch 只出现在[convert]可选依赖中用于从原始权重导出 Core ML 包。从源码结构看laya.load()agent.py会根据包内的coreml_config.json的format字段自动分派laya-coreml-ane格式返回ANEAgent默认cpu_ne普通格式返回Agent默认cpu_gpu。也就是说引擎选择不是用户手写开关而是由下载的模型包自身决定用户仍可通过compute_units显式覆盖做对照实验。二、安装后直接演示Core ML 驱动贪吃蛇环境要求与三步启动项目面向 Apple SiliconmacOS 15、Python 3.11–3.13本地发布验证使用 M3 Max / macOS 27.2。一条命令装好依赖、一条命令下载模型、一条命令开玩pip install laya-coreml[demo] hf download aac6fef/laya-multilingual-coreml-ane --local-dir models/snake laya-coreml-snake --model ./models/snake要点下载一次即可离线运行。推理不依赖 PyTorch、Transformers 或 MLX终端至少需要104 列 × 35 行首次 Core ML 加载和编译可能需要几十秒默认 12 步/秒便于看清概率变化——这是可读的展示速度不是硬件上限。操作方式控制动作空格暂停 / 继续上 / 下箭头或/-提高 / 降低决策频率R开启下一局换种子Q / Ctrl-C退出并恢复终端游戏循环的按键解析与帧循环实现位于 laya_coreml/snake/cli.py空格切换stats[paused]上下箭头调整args.fps范围 1–240R用seed round - 1派生新局种子Q或Ctrl-C退出。另有--no-alt-screen把最终画面留在滚动缓冲和--headless无显示跑同一套模型与游戏两个部署选项。强制离线与可见的安全层与 README 中OFFLINE展示对应游戏策略层laya_coreml/snake/policy.py的local_checkpoint会先设置HF_HUB_OFFLINE1与HF_HUB_DISABLE_TELEMETRY1再尝试解析本地目录或已缓存快照若模型未缓存直接报错并给出下载命令而不是在游戏运行时偷偷联网。每个Decision记录proposed模型原始 top-1与executed安全层过滤后的实际动作两者不一致时intervenedTrue界面上的干预次数随之累加。安全层是确定性规则只有沿哈密顿循环安全前进的移动才允许执行guarded模式默认开启用--unassisted可以关闭它直接执行模型原始 top-1。README 强调带安全层的零死亡并不能证明无辅助的贪吃蛇智能或无限生存能力。稳定决策率49.1–50.0 步/秒完整游戏循环包含终端内容生成与序列化排除终端窗口自身绘制在三个种子、各 600 步的不限速测试中达到49.1–50.0 步/秒零死亡、两次安全层干预。定时模式下的限制与完整数据见 docs/SNAKE_BENCHMARKS.md。想自己复测可用laya-coreml-snake benchmark子命令详见 docs/SNAKE_DEMO.mdlaya-coreml-snake benchmark --model ./models/snake \ --rates 20,30,40,50,60 --sweep-steps 120 --soak-steps 600 \ --seeds 101,102,103 --raw-steps 200 --output snake-benchmark.json计时包含模型预测、规划器工作、Rich 真彩组合、ANSI 序列化与游戏更新但排除终端模拟器自身的绘制结果代表本机、本批种子上通过的最高被测速率不是普适上限。三、Python 调用一次 predict拿到三类问题的概率安装基础包即可pip install laya-coreml最小示例import laya_coreml as laya agent laya.load(aac6fef/laya-multilingual-coreml-ane) result agent.predict( 客户要求退还重复扣除的款项。, { refund: { type: noul, instructions: Does the customer request a refund?, } }, ) print(result[answers][refund])predict与system_one是同一个方法别名见 result.py。状态可以是字符串也可以是会被 JSON 序列化的字典/列表common.py 的serialize_state问题按插入顺序处理多数导出 batch1多个问题会多次调用模型。三种问题类型与返回语义类型语义返回choice从若干带描述的选项中选择选中标签 每个标签的概率score有序档位评分期望的零基类别索引 legend 各档概率noul布尔判断true 的概率即p[1]具体到实现result.pychoice返回choicelabels[int(p.argmax())]与probabilities全表score返回score(np.arange(k) * p).sum()期望类别与legend、probabilitiesnoul返回noulround(float(p[1]), 4)且其confidence取max(p[1], 1-p[1])所有答案都附带上游定义的confidence归一化香农熵见 common.py 的confidence_from_probs与 action 头概率字段。这些估计可能出错——项目自己的验证衡量的是移植一致性不是任意任务正确率。单问题示例可参考 examples/questions.json。离线与固定版本远程模型 ID 首次会下载之后全部本地推理传local_files_onlyTrue强制只使用已有缓存也可以直接传本地目录laya.load(./models/ane, local_files_onlyTrue)要复现某个精确快照传revisionHub commit SHA发布版本对应的固定 revision 见 docs/RELEASE.md。下载解析由 laya_coreml/hub.py 的resolve_checkpoint完成本地目录优先否则用snapshot_download拉取coreml_config.json、rl_agent_config.json、encoder/config.json、tokenizer/*、model.mlpackage/**、host_weights.safetensors等白名单文件。一个值得注意的缓存坑Hugging Face 共享缓存用符号链接存模型文件在测试过的 macOS 版本上Core ML 可能把符号链接复制进临时编译目录而丢失权重文件。因此加载器会自动把 Core ML 包物化为普通文件放在~/.cache/laya-coreml/packages/校验内容哈希后复用可用LAYA_COREML_CACHE环境变量改缓存根目录见 docs/USAGE.md。代价是额外磁盘空间不是额外下载用hf download --local-dir创建的目录本身是普通文件无需复制。容量预算96-token 与 1024-tokenANE 快速版是96-token 总预算包括问题、选项和状态超出会直接报错inputs.py 中collate_items在length limit时抛出ValueError。需要更长输入时改用aac6fef/laya-multilingual-coreml的 1024-token 通用模型通用模型保留上游在完整上下文限制下的状态截断行为。完整 API 与模型选择见 docs/USAGE.md。四、校准温度钳制一个诚实的安全边界这是一个容易被忽略但非常重要的安全细节。跟随上游 v0.3.5校准温度在使用前会被钳制到[0.5, 5.0]检查点自带的choice:11桶温度为 0.1006会把 logits 锐化约 10 倍从而把接近随机的答案报告成近乎确定——以 0.24 的 top 概率被发布为 0.99任何基于置信度做门控的调用方都会被误导。项目对此的处理common.pyTEMP_MIN 0.5、TEMP_MAX 5.0clamp_temperature负责把非法值钳制回[lo, hi]非数字回退为 1.0加载时对每个被钳制的桶发出RuntimeWarning逐一点名如choice:110.1006原始值仍可通过agent.temperature_raw和agent.temperature_by_options_raw查看——只读不改钳制后的值才是唯一被应用的校验规则要求所有温度有限且为正否则直接ValueError。也就是说置信度字段本身也可能不校准仓库宁可拒绝应用会制造确定性幻觉的极端温度也不粉饰输出。调用方应对被钳制桶的 confidence 保持谨慎加载时的警告已明确提示。五、性能与精度M3 Max 上的 65,598 次实测基准环境与方法M3 Max40 核 GPU、128 GiBmacOS 27.2相同短问题91 个真实 token 补齐到 96MLX 基线开启compile、提示词缓存和长度档位每组六个 20 秒区间交替执行共65,598 次稳定调用。计时包含分词、输入准备、同步推理和结果格式化排除加载与预热。结果总表指标编译后的 MLX FP16ANE FP16ANE 8-bitP50 / P956.94 / 7.39 ms4.98 / 5.31 ms4.88 / 5.23 ms平均整机功率估计61.39 W30.75 W27.39 W每次决策整机能耗0.4288 J0.1540 J0.1344 J速度提升1×1.39×1.42×每次决策能效改善1×2.78×3.19×关键解读README 明确给出避免误用这些是单问题 API 的结果不是完整贪吃蛇的每帧耗时SNake 场景下每步串行回答三个问题不能宣传为约 5 ms 一帧速度比 × 平均功率比 每次决策能效改善FP16 为 1.39 × 1.997 ≈ 2.78W8 为 1.42 × 2.24 ≈ 3.19。把能耗比再乘一次速度属于重复计算时间是错误的8-bit 压缩的是权重计算仍用 FP16模型主体包缩小不等于同比例提速功耗直接读取 SMCPSTR 整机传感器保留原始样本并拒绝异常整轮这是带传感器与后台应用误差的估计值不是外部功率计读数十倍目标尚未达到——README 明确承认这一点不做过度的能力宣传。更完整的逐项数据含 idle 扣除能耗、每轮功率区间、完成次数、包体积对比等见 docs/ANE_BENCHMARKS.md原始采样与汇总 JSON 存放在 benchmarks/results通用 Core ML benchmark 见 BENCHMARKS.md。功耗遥测的严谨性最终对比使用了一个无特权的 PSTR-only 采样器见 benchmarks/pstr_sampler/README.md源码在 benchmarks/pstr_sampler/src/main.rs每 500 ms 采样一次原始PSTR值不读 IOReport 组件计数器。原因官方 macmon CLI 用sys_power max(PSTR, component_sum)计算功率而该 OS 上 CPU/ANE 计数器通常返回 0某次采样跳变到约 38,021 W CPU / 2,068 W ANE组件下限把整机读数污染成约 40,089 W——整个受影响的能量轮次被整体拒绝不裁剪、不掩盖坏样本拒绝记录保留在 benchmarks/results/ane-energy-rejected-telemetry.json但其能耗聚合值不得作为结果使用。这个细节体现了基准数据的诚实边界任何能耗结论都附带了测量方法与已知限制。移植一致性fidelity验证三个通用 FP16 模型共189/189个验证问题与原版选项一致各完成 100 次稳定重复调用ANE FP16 L96 通过59/59最大校准概率偏差0.002925W8 同一子集偏差0.014393通过既定0.02门槛6-bit / 4-bit 没有通过门槛未作为发布权重上传独立导出的 ANE FP16 L1024 通过完整63/63但真正 1024-token 请求耗时约91.7 ms没有显示出长上下文加速优势ANE Snake 对照通过600/600动作一致、零死亡、零接管。仓库明确指出这些数字验证的是移植一致性不代表任意任务的正确率。上述工程的推导过程compute plan、组件计时、逐层数值校验与原始 JSON 证据都在 docs/ANE_ENGINEERING.md 及 experiments/ane_engineering 下如 body96/report.json、validation96.json、layer96/report.json。测试套件中还有可复现的转换一致性测试例如 tests/test_model.py 的test_real_coreml_conversion_and_dynamic_paddingmacOS 上运行与test_padding_values_cannot_affect_valid_outputs。六、六个可直接下载的模型包Hugging Face 模型默认引擎总长度 / batchlaya-coremlCPU GPU512 / 1laya-multilingual-coremlCPU GPU1024 / 1laya-typed-decisions-coremlCPU GPU1024 / 1laya-multilingual-coreml-snakeCPU GPU64 / 3laya-multilingual-coreml-aneCPU ANE96 / 1laya-multilingual-coreml-ane-w8CPU ANE96 / 1选择建议结合 docs/USAGE.md 的用途表英文原版 / 通用多语言 / 上游专用检查点前三者分别对应 Laya 421M、Multilingual 322M、上游 typed-decisions 检查点容量 512 或 1024 token贪吃蛇 GPU 包B3/L64/K4把三个紧凑游戏问题批量推理ANE 短决策-ane是 FP16 主体-ane-w8是可选的近似 W8 调色板压缩FP16 计算。两者都固定 B1/L96。每个包包含模型卡、配置、tokenizer、校验和、来源provenance和打包后验证。ANE 包自带所需的原始 embedding 与 action head 张量host_weights.safetensors无需原始训练仓库即可运行——这对应 ane.py 中用safe_open读取encoder.embeddings.tok_embeddings.weight、type_emb.weight与act_head.*的实现。重要普通 SDPA 导出和专门改写的 ANE 图是不同路径仅修改普通模型的 compute units例如compute_unitscpu_ne不会自动获得 ANE 快速路径详见 docs/ANE_ENGINEERING.md 与 docs/CONVERSION.md。七、源码级原理Agent、ANEAgent 与两套推理路径普通导出CPU GPU / CPUAgentagent.py的加载流程resolve_checkpoint解析本地目录或 Hub 快照读取coreml_config.json校验format laya-coreml且format_version 1RangeDim CPU_AND_GPU 保护若导出 shape 是灵活的 RangeDim 且无枚举lengths默认拒绝以cpu_gpu加载——因为无限制 RangeDim GPU shape 在本机保真度检查失败必须重新用枚举 shape 导出或显式allow_unvalidated_gpuTrue仅供复现失败见测试 tests/test_model.py 的相关断言语境读取rl_agent_config.json的温度构建 tokenizer再以ct.models.MLModel(..., compute_units...)加载model.mlpackage。compute_units合法取值在 agent.py 中定义为all / cpu / cpu_gpu / cpu_ne。forward就是一次model.predict(batch)返回logits与action_logits两个数组。ANE 专用图CPU ANEANEAgentane.py是一条完全不同的实现路径固定签名要求batch_size 1、max_options 32、非 flexible且对五个输入张量的形状逐一校验embeddings、full_mask、local_mask、type_vectors、marker_map不匹配直接ValueErrorHost embedding 单张 ANE 图 CPU action headembedding 查找、mask 构建、type 向量与 marker 映射都在主机侧用 NumPy 完成ane.pyTransformer 主体交给 ANEaction 头在 CPU 上以 FP32 计算精确 erf GELUaction 头激活使用hidden * (1 erf(hidden / sqrt(2))) / 2注释明确只有 256 个 host 元素精确 erf不用 tanh/sigmoid 近似ane.py概率经 marker mask 掩码后做 softmax并计算熵、top-2 差值等特征送入 action 头。从计算计划看docs/ANE_ENGINEERING.mdB1/L96 图的6,390 个非常量操作全部被放置到MLNeuralEngineComputeDevice其余 3,809 项是常量普通 SDPA 导出在同一系统上没有任何 NE 偏好操作。需要强调的是compute plan 是预期放置而非硬件执行证据——仓库另附了 15.97 秒 Instruments Core ML trace捕获 3,124 个活动的 Neural Engine Prediction 区间作为运行期证据见 docs/ANE_BENCHMARKS.md 与允许清单 benchmarks/results/ane-hardware-events.json。同时CPUANE允许 CPU 与 ANE 共同工作不能保证每个操作都在 ANE 上执行输入输出边界仍由 CPU 处理。输出侧无 token 生成无论哪条路径system_oneresult.py都执行同样的后处理链logits 按温度桶缩放 → softmax → 组装结构化答案 → 校验有限性非有限输出抛FloatingPointError→ 返回output_tokens: 0。八、CLIpredict 与 convert推理把问题字典存成questions.json可参考 examples/questions.json然后laya-coreml predict ./models/ane --offline \ --state The customer requests a refund. --questions questions.jsonlaya-coreml predict接受本地目录或 Hub ID、可选--revision、--compute-unitsall/cpu/cpu_gpu/cpu_ne默认 ANE 包为cpu_ne、普通导出为cpu_gpu--offline禁止 Hub 访问等价于local_files_onlyTrue。参数解析在 laya_coreml/cli.py输出为缩进 JSON。从源头导出pip install laya-coreml[convert] laya-coreml convert laya-multilingual models/custom-multilingualconvert支持--max-length、--batch-size默认 1、--max-options默认 32、--fixed、--precisionfloat16/float32默认 float16、--attentionexplicit/sdpa默认 sdpa、--shape-modeenumerated/range默认 enumerated等参数laya_coreml/cli.py。ANE 研究型导出器在仓库的 experiments/ane_engineeringprobe.py、palettize.py、runtime.py、benchmark.py等中位于推理 wheel 之外需要从源码目录安装pip install -e .[convert,dev,research]后运行python -m experiments.ane_engineering.probe。对应的工作流见 docs/CONVERSION.md 与 docs/ANE_ENGINEERING.md。九、文档地图、复现与许可文档地图以仓库根为基准docs/USAGE.md安装、Python 与 CLI 完整 API、离线用法docs/SNAKE_DEMO.md贪吃蛇演示、控制、录制与媒体导出docs/SNAKE_BENCHMARKS.md稳定决策率测试与发布数据docs/ANE_BENCHMARKS.mdANE 速度/能耗完整报告docs/ANE_ENGINEERING.mdANE 工程实现与实验docs/ANE_MATH.md十倍目标的数学调查与保真度契约docs/CONVERSION.md转换问题与支持的 shapedocs/RELEASE.md发布产物与固定 Hub revisiondocs/LAUNCH.md可分享视频与录制溯源BENCHMARKS.md通用 Core ML benchmarkbenchmarks/results全部原始测量 JSON复现推理侧安装laya-coreml即可重跑示例见 examples/quickstart.py基准侧pip install -e .[convert,dev,compare,research]后按 docs/ANE_BENCHMARKS.md 的 Reproduce 一节构建 PSTR 采样器cargo build --release --locked --manifest-path benchmarks/pstr_sampler/Cargo.toml并运行python -m benchmarks.energy与python -m benchmarks.energy_summary测试侧pytest测试位于 tests覆盖 ANE 布局、输入构造、能量汇总、模型转换一致性、Snake 策略等。许可与归属代码采用 Apache-2.0。原始 Laya。结语能用什么、不能宣传什么最后把边界再收拢一次你能得到的是一个在 Apple Silicon 上完全本地、零输出 token、直接返回概率的决策推理栈短问题在 M3 Max 上约 5 msP50整机能效约为编译后 MLX 的 2.78–3.19 倍六种模型包覆盖了通用多语言、英文原版、专用检查点、贪吃蛇批量与 ANE 快速路径等场景。但同时十倍加速目标未达到、单问题延迟不等于贪吃蛇整帧延迟、L1024 长输入无加速优势、置信度可能因极端温度被钳制而失真、移植一致性不等于任务准确率——这些限制与数字本身一样重要也是本项目在数据严谨性上最值得借鉴的部分。赞分享【免费下载链接】laya-coremlLocal Laya typed decisions on Apple Core ML and Neural Engine. Validated ports, ~5 ms short decisions on M3 Max, reproducible speed and energy benchmarks.项目地址https://gitcode.com/gh_mirrors/la/laya-coreml点击查看免费下载相关推荐laya-coreml Snake 终端演示实战在 Apple Core ML 与 Neural Engine 上运行本地实时决策模型laya coreml Snake 终端演示实战在 Apple Core ML 与 Neural Engine 上运行本地实时决策模型 docs/SNAKE_Laya-CoreML在 Apple Core ML 与 Neural Engine 上运行开源 Laya 类型化决策模型的完整指南Laya CoreML在 Apple Core ML 与 Neural Engine 上运行开源 Laya 类型化决策模型的完整指南 Laya CoreMLLaya-MLX 实战指南在 Apple Silicon 上以毫秒级延迟原生运行 Laya 类型化决策模型Laya MLX 实战指南在 Apple Silicon 上以毫秒级延迟原生运行 Laya 类型化决策模型 Laya MLX 是 Laya 类型化决策模型t人工智能大模型本地部署推理引擎创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考