
和 LLM 一起的 CoreML 尝试
由于本人的 2060 显卡运损,我之前运行的一系列本地 AI 工具尽数不可用,不得不临时使用我的 MacBook 运行它们,所幸他们大部分使用的是 PyTorch 框架,简单修改 device=mps 即可成功运行 不过在后续的使用过程中,发现它的效率远不如之前的 2060,同时会导致我的 MacBook 发热严重(没有主动散热的 Air 版本),系统卡顿,我不得不另寻他法 发现 MLX 在查阅 stable-ts 项目的文档时,意外发现它已有 MLX (Apple Machine Learning Exploration) 框架的支持 为了利用这一性能优势,我根据文档修改了模型加载函数。然而,在实际运行我本地下载的 Hugging Face 模型 kotoba-whisper-v2.0 时,程序却抛出了一个错误: ModelDimensions.__init__() got an unexpected keyword argument '_name_or_path' 意思是 PyTorch 的模型,其内部参数结构(如 _name_or_path)与 MLX 框架的模型定义并不直接兼容 从 PyTorch 到 MLX 解决这个问题的核心步骤是将现有的 Whisper 模型权重转换为 MLX 框架能够识别和加载的格式,幸运的是 MLX 社区提供的转换脚本:convert.py 这个脚本负责解析原始 Whisper 模型的权重文件,并将其重新保存为 MLX 特定的格式,确保所有张量和配置项都能被 MLX 库正确加载和初始化。By the way,如果使用的是 OpenAI 官方开源的 Whisper 模型,MLX 包内已预先提供了一些转换好的模型地址,可以直接使用,省去了手动转换的麻烦 性能飞跃 完成模型转换并成功运行后,MLX 相较于 whisper.cpp 实现效率提升了 2 到 5 倍。更重要的是,在 Apple Silicon 芯片上,其功耗使用基本完全集中在 Apple Neural Engine (ANE) 上,使得 GPU 的负载极低,几乎不产生额外负担 ...