目录tinygrad框架简介MLX框架简介LLaMA编辑Stable Diffusion编辑tinygrad框架简介极简主义与易扩展性 tinygrad 的设计理念是极简主义。 MLX框架简介基本信息开发者:Apple的机器学习研究团队设计理念:专为苹果芯片设计,旨在提供一个既简单易用又高效的研究环境,让研究人员能够快速探索和实现新的算法思想。 主要特点紧密类似NumPy的API:MLX提供了与NumPy类似的Python API,以及与之对应的C++ API,使得开发者能轻松上手。 )语音识别(利用OpenAI的Whisper进行语音识别)获取方式MLX可以通过PyPI安装Python API,或者通过GitHub上的源代码进行编译和安装。 综上所述,tinygrad和MLX都是具有独特特点和优势的深度学习框架,分别适用于不同的开发者和应用场景。
介绍 MLX 是 Apple 专为 Apple 芯片设计的机器学习框架。 MLX Swift 将 MLX 扩展到了 Swift,可以直接在 iOS 项目中使用而无需借助 Python。 MLX 中的 MLXLLM 模块提供了一种简单的方法来在本地设备(iPhone/iPad/Mac)使用预训练的大语言模型 (LLMs) 进行推理。 使用步骤 添加 MLXLLM Package。
介绍 在 SwiftUI-MLX本地大模型开发、SwiftUI-MLX本地大模型开发(二)与 SwiftUI-MLX本地大模型开发(三)中,我们解决了基本使用、定制模型、使用本地模型、更改模型存储路径、 环境 pip install mlx pip install mlx-lm pip install transformers 数据 新建文件train.jsonl、valid.jsonl与test.jsonl 根据模型说明文件,准备数据,格式如下。本文以ticoAg/Chinese-medical-dialogue进行微调。 {"text": "你是谁?\n我是你的私人智能小助手,我叫羊羊。"} mlx_lm.lora \ --train \ --model /Users/yangfan/Documents/huggingface/models/mlx-community/Llama-3.2 \ --model /Users/yangfan/Documents/huggingface/models/mlx-community/Llama-3.2-1B-Instruct-4bit \ -
介绍 在 SwiftUI-MLX本地大模型开发一文中,我们已经详细讲了如何利用 MLX 进行本地大模型的开发。但是通过案例可以发现 2 个问题: MLX 内置的大模型数量有限。 可以在 Hugging Face 模型搜索地址 中搜索需要的 MLX 大模型。 // MARK: - 注册自定义模型,模型必须为MLX格式 extension MLXLLM.ModelRegistry { public static let llama3_2_3B_4bit = ModelConfiguration( id: "mlx-community/Llama-3.2-3B-Instruct-4bit", // Hugging Face上模型的仓库路径 可以在 Model Scope 模型搜索地址 中搜索并下载需要的 MLX 大模型。
/huggingface/models/mlx-community目录(iOS)。 案例:将模型存储位置更改为:/Users/yangfan/Downloads/mlx_models/models/mlx-community(macOS)或者 sandbox 下的Downloads/mlx_models /models/mlx-community目录(iOS)。 # 安装mlx_lm pip install mlx mlx-lm # 下载模型到本地 modelscope download --model NousResearch/Hermes-3-Llama- --hf-path /Users/yangfan/Documents/modelscope/Hermes-3-Llama-3.2-3B -q # --mlx-path:转换后模型存储路径 mlx_lm.convert
适配本地模型:适用于运行在 Apple Silicon 上的 MLX 模型。 支持资源监控:可输出内存占用等性能指标,方便优化推理策略。 llm-tool使用步骤 克隆项目git clone https://github.com/ml-explore/mlx-swift-examples.git。 使用 Xcode 打开mlx-swift-examples项目,选择 llm-tool 进行编译。 通过终端命令mlx-run llm-tool eval快速测试。 案例 cd mlx-swift-examples . /mlx-run llm-tool eval \ --model /Users/yangfan/Documents/modelscope/Hermes-3-Llama-3.2-3B \
MLX90640 开发笔记 最终的成果是一个微型的USB接口红外成像模块(微型红外成像仪30*30mm),可以连接到Android手机或者计算机的USB接口,实时显示热像视频,和手机相机差不多,只不过它是热红外成像
MLX90377 支持更多的输出信号格式,而全新的单模封装(SMP) 可提高无 PCB 集成并降低制造成本 2021 年 5 月 28 日,比利时泰森德洛 - 全球微电子工程公司 Melexis 推出面向汽车和工业应用的单裸片和双裸片 MLX90377产品应用图.jpg MLX90377 是一款磁旋转和线性位置传感器芯片,将在 Triaxis 传感器芯片 MLX90371 和 MLX90372 的成功基础上再续辉煌。 MLX90377 基于 Triaxis 霍尔磁性前端,集成了 ADC 信号调节模块、数字信号处理器以及支持 SPC(短 PWM 代码)、模拟、PWM 和 SENT 信号格式的输出级驱动器。 作为 Triaxis 位置传感器芯片系列的一员,MLX90377 同样可用于旋转和线性运动位置传感应用。 其中 SMP-3 是一款单裸片解决方案,MLX90377 是首款支持 SMP-3 的产品,SMP-4 是一款双裸片解决方案(共享电源和接地引脚),此前推出的 MLX90371 是首款支持 SMP-4 的产品
方案二:安装 vllm-mlx(简单快速)vllm-mlx 是第三方独立实现,安装更简单,支持文本、图像、视频、音频多模态推理。 vllm-mlx4.3 验证安装vllm-mlx --help5. 模型选型推荐基于 128GB 内存,以下是推荐的模型(均为 MLX 格式,位于 Hugging Face 的 mlx-community 组织下):模型名称内存占用优势推荐等级Qwen3-30B-A3B 启动# 激活环境source ~/.venv-vllm-mlx/bin/activate# 启动服务vllm-mlx serve mlx-community/Qwen2.5-72B-Instruct- /Qwen2.5-72B-Instruct-4bit --port 800111.5 生成速度慢确认是否使用了 MLX 格式模型(mlx-community 前缀)尝试启用 Paged Attention
新增的参数结构 Metrics 中增加了: • PeakMemory:以GiB或人类可读格式输出峰值内存; • formatPeakMemory()函数:自动判断单位并格式化显示; • Summary( 新策略: • 当模型类型为MLX(即safetensors格式),将禁用上下文截断; • 非MLX模型仍保留truncate机制,但在计算时精确考虑图片token数量。 IsMLX()方法新增用于判断模型格式 在images.go中新增: func (m *Model) IsMLX() bool { return m.Config.ModelFormat == model.go加入了推理层循环判定逻辑: • 若KV头数含零层则判定为Recurrent; • 若全非零则根据full_attention_interval推导混合布局; • 自动兼容旧GGUF模型格式 七、MLX客户端与管线全面增强 1.
CQE格式64字节CQE和128字节CQE格式如下:图片图片64B: 0x0~0x3C(60B)128B: 接收完成报告的扩展 CQE 段的格式如上表 146 所示, 0x0~0x3C(用于GRH或内联 以下伪代码解释了如何确定 CQE 属于 SW 所有权当创建或调整 CQ 大小时,软件需要使用所有者位 = 硬件, 来初始化整个 CQE 缓冲区MLX5参考实现:static inline int mlx5 _DEBUG { struct mlx5_context *mctx = to_mctx(cq->verbs_cq.cq_ex.context); if (mlx5_ debug_mask & MLX5_DBG_CQ_CQE) { mlx5_dbg(mctx->dbg_fp, MLX5_DBG_CQ_CQE, "dump cqe : cqe + 64; if (likely(mlx5dv_get_cqe_opcode(cqe64) != MLX5_CQE_INVALID) && !
苹果刚刚发布了MLX,一个在苹果芯片上高效运行机器学习模型的框架。 最近在PyTorch 1.12中引入MPS后端已经是一个大胆的步骤,但随着MLX的宣布,苹果还想在开源深度学习方面有更大的发展。 创造环境 要为MLX构建环境,我们必须指定是使用i386还是arm架构。 MLX:比M1 Pro上的MPS快2.34倍。与MPS相比,M2 Ultra的性能提高了24%。在M3 Pro上MPS和MLX之间没有真正的改进。 总结 与CPU和MPS相比,MLX可以说是非常大的金币,在小数据量的情况下它甚至接近特斯拉V100的性能。也就是说我们可以使用MLX跑一些不是那么大的模型,比如一些表格数据。 MLX刚刚发布就已经取得了惊人的影响力,并展示了巨大的潜力。相信未来几年开源社区的进一步增强,可以期待在不久的将来更强大的苹果芯片,将MLX的性能提升到一个全新的水平。
MLX90640 红外热成像仪测温模块开发笔记(四)损坏和不良像素的处理 如前“开发笔记(一)”所说,MLX90640 可能存在不超过 4 个像素的损坏或者不良像素,在温度计算过程完成后,这些不良像素点会得到错误的温度数据 ,对于处理这些不良数据 MLX 也给出了推荐方法和具体的函数。 if(pixel == params->outlierPixels[i] || pixel == params->brokenPixels[i]){return 1;}}return 0;}void MLX90640 如下(斜体是添加的内容):……MLX90640_CalculateTo(Frame, MLXPars, 0.95, Tr, Temp); MLX90640_BadPixelsCorrection(MLXPars.brokenPixels , Temp, 1, MLXPars); MLX90640_BadPixelsCorrection(MLXPars.outlierPixels, Temp, 1, MLXPars);……/*经过上面的处理后
与 EQ 关联的 DoorBell 寄存器(请参见第 250 页上的“UAR 页面格式”)。 有关详细信息,请参考第 250 页上的“UAR 页面格式”。 8.20.3 完成事件 HCA 实现了 CQ,详细描述见第 248 页上的“软件接口”。 进一步,将通过轮询 EQ 并使用 DoorBells 更新 EQ 消费者索引来管理 EQ(请参阅第 250 页上的“UAR 页面格式”)。 请参阅第 250 页上的“UAR 页面格式”。仅当在设备的相应 PCI 配置寄存器中设置了 MSI-X 启用位时,才会生成 MSI-X。 中断调节可通过 CONFIG_INT_MODERATION 命令进行配置参考MLX PRM 8.20 Events and Interrupts中断分析(XB): https://cloud.tencent.com
RDMA驱动、nvidia_peermem Linux内核增加ARP双发特性,支持RDMA的双发(提供内核patch) RDMA bond网络的反向路由检查 bond配置脚本,rdma网卡名不建议ethX格式 带宽测试server: taskset -c 20,21 ib_write_bw -d mlx5_bond_0 -x 3 -F --report_gbits -p 18500 -D 2 -q 10 -- run_infinitely taskset -c 24,25 ib_write_bw -d mlx5_bond_2 -x 3 -F --report_gbits -p 18502 -D 2 -q 10 --run_infinitely taskset -c 80,81 ib_write_bw -d mlx5_bond_4 -x 3 -F --report_gbits -p 18504 -D 2 -q 10 --run_infinitely taskset -c 84,85 ib_write_bw -d mlx5_bond_6 -x 3 -F --report_gbits -p 18506 -D 2
从 CPU 程序员的角度来看,存在一个传输队列(Verbs 中的发送队列是队列对 (QP))和一个完成队列(Verbs 中的 CQ 的长格式)。 "MLX5_SCATTER_TO_CQE") //设置环境变量, 允许散列到完成队列元素 MLX5_QP_FLAG_SCATTER_CQE MLX5_QP_FLAG_ALLOW_SCATTER_CQE _SCATTER_TO_CQE") mlx5_create_flags |= MLX5_QP_FLAG_SCATTER_CQE -> mlx5:支持通过 DCT QP 向 CQE 散射 中拷贝内联数据到发送方指定地址中 mlx5_poll_cq -> poll_cq mlx5_stall_cycles_poll_cq or mlx5_stall_poll_cq = ctx->dump_fill_mkey_be)) -> mlx5:添加对 ibv_alloc_null_mr 的支持,如果支持,mlx5_alloc_null_mr 会分配 MR 并使用 mlx5_
用于机器学习的MLX框架是专门为苹果的Silicon处理器架构开发的。MLX可通过GitHub获得,旨在简化苹果硬件上的机器学习模型培训和部署。 然而,MLX的不同之处在于统一的内存模型——MLX中的阵列位于共享内存中,而操作可以在任何支持的设备类型上执行,而无需执行数据复制。 MLX存储库中写道:“该框架旨在用户友好,但仍然可以高效地训练和部署模型。框架本身的设计在概念上也很简单。我们打算让研究人员更容易地扩展和改进MLX,以快速探索新想法。”。 MLX有一个Python API,它紧跟NumPy——一个流行的Python编程库。MLX还包含C++API和更高级别的包,这些包遵循PyTorch构建更复杂的模型。 MLX功能 MLX的其他关键功能包括: 可组合函数转换:MLX具有用于自动微分、自动矢量化和计算图优化的可组合函数变换。 惰性计算:MLX中的计算是惰性的,只有在需要时才具体化数组。
MLX90640 红外热成像仪测温模块开发笔记(五)阵列插值-由 32*24 像素到 512*384 像素 图片 MLX90640 的 32*24=768 像素虽然比以往的 8*8 或者 16*8 像素提高了很多 算法依据 比较有代表性的是杭州电子科技大学杨风健等《基于 MLX90620 的低成本红外热成像系统设计》,使用三次多项式+双线性插值,将原 16*4 像素扩展为 256*64 像素。
AEQ 是 AEQ 条目的打包数组(有关 AEQ 条目的格式,请参阅第 11.4.6 节),位于主机内存中几乎连续的缓冲区中(参见图 11-2)。 每个 CQE 的长度为 32 或 64 字节,格式取决于与 CQE 关联的 WQ 的类型。CQP、RDMA 和 UDA WQ 都可以与 CQ 相关。 CQ 的影子区域格式如第 1641 页的表 11-27 所示 perftest中的cqe调节/缓和(cq_moderation): 根据消息大小调整默认的CQ调节值描述:对于大消息,最好每条消息都使用 MLX5(req_notify_cq实现) .req_notify_cq = mlx5_ib_arm_cq, if (cq->notify_flags ! } break; E810 CEQE CEQ由CEQE组织为环形BUF存放在主机内存中来表示 这些CEQ可以是虚拟或物理连续, 通过控制QP(control QP)进行管理 CEQE格式由
苹果刚刚发布了MLX,一个在苹果芯片上高效运行机器学习模型的框架。 最近在PyTorch 1.12中引入MPS后端已经是一个大胆的步骤,但随着MLX的宣布,苹果还想在开源深度学习方面有更大的发展。 创造环境 要为MLX构建环境,我们必须指定是使用i386还是arm架构。 MLX:比M1 Pro上的MPS快2.34倍。与MPS相比,M2 Ultra的性能提高了24%。在M3 Pro上MPS和MLX之间没有真正的改进。 总结 与CPU和MPS相比,MLX可以说是非常大的金币,在小数据量的情况下它甚至接近特斯拉V100的性能。也就是说我们可以使用MLX跑一些不是那么大的模型,比如一些表格数据。 MLX刚刚发布就已经取得了惊人的影响力,并展示了巨大的潜力。相信未来几年开源社区的进一步增强,可以期待在不久的将来更强大的苹果芯片,将MLX的性能提升到一个全新的水平。