文章目录

    • 一、关于MLX LM
      • 1、项目概览
      • 2、相关链接资源
      • 3、功能特性
    • 二、安装配置
    • 三、使用指南
      • 1、快速开始
      • 2、Python API
      • 3、量化模型,上传HF
      • 4、流式生成
        • 采样
      • 5、命令行
      • 6、长提示词与生成
    • 四、支持模型
      • 大模型


一、关于MLX LM

1、项目概览

MLX LM是一个Python工具包,支持在Apple芯片上使用MLX进行文本生成和大语言模型微调。


2、相关链接资源

  • GitHub:https://github.com/ml-explore/mlx-lm
  • Hugging Face社区:https://huggingface.co/mlx-community
  • Hugging Face Space:https://huggingface.co/spaces/mlx-community/mlx-my-repo

3、功能特性

  1. Hugging Face Hub集成

    • 支持数千种LLM模型的单命令调用
    • 支持模型量化和上传到Hugging Face Hub
  2. 模型微调

    • 支持 低秩适配(LoRA)和全模型微调
    • 支持量化模型微调
    • 通过 mx.distributed 实现分布式推理和微调

二、安装配置

# pip安装
pip install mlx-lm# conda安装
conda install -c conda-forge mlx-lm

三、使用指南

1、快速开始

文本生成

mlx_lm.generate --prompt "How tall is Mt Everest?"

交互式聊天

mlx_lm.chat

这将为你提供一个可与大语言模型(LLM)交互的聊天REPL环境。在REPL会话持续期间,聊天上下文会被保留。

mlx-lm中的命令通常支持命令行选项,用于指定模型、采样参数等配置。使用-h参数可以查看某个命令的可用选项列表,例如:

mlx_lm.generate -h

2、Python API

可以将 mlx-lm 作为模块使用:

from mlx_lm import load, generatemodel, tokenizer = load("mlx-community/Mistral-7B-Instruct-v0.3-4bit")prompt = "Write a story about Einstein"messages = [{"role": "user", "content": prompt}]
prompt = tokenizer.apply_chat_template(messages, add_generation_prompt=True
)text = generate(model, tokenizer, prompt=prompt, verbose=True)

要查看所有参数的描述,您可以执行:

>>> help(generate)

查看生成示例了解如何更详细地使用该API。

3、量化模型,上传HF

mlx-lm包还提供了量化模型及可选上传至Hugging Face Hub的功能。

您可以通过Python API转换模型:

from mlx_lm import convertrepo = "mistralai/Mistral-7B-Instruct-v0.3"
upload_repo = "mlx-community/My-Mistral-7B-Instruct-v0.3-4bit"convert(repo, quantize=True, upload_repo=upload_repo)

这将生成一个4位量化的Mistral 7B模型,并上传到代码库 mlx-community/My-Mistral-7B-Instruct-v0.3-4bit

默认情况下,转换后的模型还会保存在路径mlx_model中。

要查看所有参数的描述,您可以执行:

>>> help(convert)

4、流式生成

对于流式生成场景,请使用 stream_generate 函数。该函数会返回一个生成响应对象。例如:

from mlx_lm import load, stream_generaterepo = "mlx-community/Mistral-7B-Instruct-v0.3-4bit"
model, tokenizer = load(repo)prompt = "Write a story about Einstein"messages = [{"role": "user", "content": prompt}]
prompt = tokenizer.apply_chat_template(messages, add_generation_prompt=True
)for response in stream_generate(model, tokenizer, prompt, max_tokens=512):print(response.text, end="", flush=True)
print()

采样

generatestream_generate 函数接受 samplerlogits_processors 关键字参数。

采样器可以是任何可调用对象,它接收一个可能批处理的 logits 数组并返回采样后的令牌数组。logits_processors 必须是一个可调用对象列表,这些对象以令牌历史和当前 logits 作为输入,并返回处理后的 logits。logits 处理器会按顺序应用。

mlx_lm.sample_utils 中提供了一些标准的采样函数和 logits 处理器。


5、命令行

你也可以通过以下方式在命令行中使用 mlx-lm

mlx_lm.generate --model mistralai/Mistral-7B-Instruct-v0.3 --prompt "hello"

这将从Hugging Face Hub下载Mistral 7B模型,并使用给定的提示生成文本。

要查看完整选项列表,请运行:

mlx_lm.generate --help

要通过命令行量化模型,请运行:

mlx_lm.convert --hf-path mistralai/Mistral-7B-Instruct-v0.3 -q

运行以下命令获取更多选项:

mlx_lm.convert --help

你可以通过为convert指定--upload-repo来上传新模型到Hugging Face。例如,要将量化后的Mistral-7B模型上传到MLX Hugging Face社区,可以执行以下操作:

mlx_lm.convert \--hf-path mistralai/Mistral-7B-Instruct-v0.3 \-q \--upload-repo mlx-community/my-4bit-mistral

模型也可以直接在 mlx-my-repo Hugging Face Space 中进行转换和量化处理。


6、长提示词与生成

mlx-lm 提供了一些工具来高效处理长提示词和生成内容:

  • 采用固定大小的旋转键值缓存机制
  • 支持提示词缓存功能

要使用旋转键值缓存,需传入参数 --max-kv-size n(其中 n 可为任意整数值)。

较小数值如 512 会显著减少内存占用,但会降低生成质量;

较大数值如 4096 或更高会占用更多内存,但能获得更好的生成质量。

通过缓存提示词可大幅加速相同长上下文在不同查询中的复用。

使用 mlx_lm.cache_prompt 方法即可缓存提示词,例如:

cat prompt.txt | mlx_lm.cache_prompt \--model mistralai/Mistral-7B-Instruct-v0.3 \--prompt - \--prompt-cache-file mistral_prompt.safetensors

然后使用缓存的提示词配合 mlx_lm.generate

mlx_lm.generate \--prompt-cache-file mistral_prompt.safetensors \--prompt "\nSummarize the above text."

缓存的提示词会被视为所提供提示词的前缀。还需注意,当使用缓存的提示词时,模型会从缓存中读取,因此无需显式指定模型。

提示词缓存功能也可在Python API中使用,以避免重复计算提示词。这在多轮对话或使用相同上下文的多次请求中非常有用。更多使用细节请参阅示例。


四、支持模型

mlx-lm 支持数千种 Hugging Face 格式的大语言模型。

如果您想运行的模型不在支持列表中,请提交一个issue,或者更棒的是,直接提交一个 pull request。

以下是与此示例兼容的部分 Hugging Face 模型示例:

  • mistralai/Mistral-7B-v0.1
  • meta-llama/Llama-2-7b-hf
  • deepseek-ai/deepseek-coder-6.7b-instruct
  • 01-ai/Yi-6B-Chat
  • microsoft/phi-2
  • mistralai/Mixtral-8x7B-Instruct-v0.1
  • Qwen/Qwen-7B
  • pfnet/plamo-13b
  • pfnet/plamo-13b-instruct
  • stabilityai/stablelm-2-zephyr-1_6b
  • internlm/internlm2-7b
  • tiiuae/falcon-mamba-7b-instruct

大多数 Mistral、Llama、Phi-2 和 Mixtral 类型的模型应该可以直接运行。

对于某些模型(如 Qwenplamo),分词器需要启用 trust_remote_code 选项。您可以通过在命令行中传递 --trust-remote-code 来实现这一点。如果没有明确指定该标志,运行模型时终端会提示您是否信任远程代码。

对于 Qwen 模型,您还必须指定 eos_token。您可以通过在命令行中传递 --eos-token "<|endoftext|>" 来实现这一点。

这些选项也可以在 Python API 中设置。例如:

model, tokenizer = load("qwen/Qwen-7B",tokenizer_config={"eos_token": "<|endoftext|>", "trust_remote_code": True},
)

大模型

注意事项: 此功能需要 macOS 15.0 或更高版本支持。

若模型体积相对于机器可用内存较大,运行速度可能会变慢。mlx-lm 会尝试通过固定模型及缓存所占用的内存来提升速度,但此功能需 macOS 15 或更高版本才能生效。

如果看到如下警告信息:

[WARNING] Generating with a model that requires …

则说明该模型在当前机器上运行可能较慢。若模型可完整载入内存,通常可通过提高系统固定内存上限来加速。要调整该限制,请设置以下 sysctl 参数:

sudo sysctl iogpu.wired_limit_mb=N

N 应大于模型大小的兆字节数,但小于机器的内存容量。


伊织 xAI 2025-06-24(二)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/88708.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/88708.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/88708.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【git学习】学习目标及课程安排

Git 是一款非常强大的版本控制工具&#xff0c;掌握它对编程和团队协作都有巨大帮助。 &#x1f3af;学习目标&#xff08;适合个人与团队使用&#xff09; 理解 Git 和版本控制的基本概念 熟练使用 Git 进行代码提交、分支管理、合并与冲突解决 掌握远程仓库协作流程&#x…

HDFS(Hadoop分布式文件系统)总结

文章目录 一、HDFS概述1. 定义与定位2. 核心特点 二、HDFS架构核心组件1. NameNode&#xff08;名称节点&#xff09;2. DataNode&#xff08;数据节点&#xff09;3. Client&#xff08;客户端&#xff09;4. Secondary NameNode&#xff08;辅助名称节点&#xff09; 三、数据…

破局与融合:破解开发与供应链安全的业务场景难题

数字化转型下的安全新范式与融合挑战 在数字化浪潮的席卷下&#xff0c;企业正全面拥抱云计算、微服务、容器化和开源技术。这种转型在极大提升业务敏捷性的同时&#xff0c;也带来了全新的安全挑战&#xff1a;传统网络边界消融&#xff0c;攻击面急剧扩大&#xff0c;“开发安…

Centos7 安装部署Git、创建仓库

概述 Git版本控制&#xff0c;大家都不会陌生&#xff0c;实践诉求是从零部署本地Git服务&#xff0c;在执行推送远程分支代码时&#xff0c;用Git服务自带的hooks触发同步代码文件&#xff0c;从而做到自动同步代码&#xff0c;实现自动更新&#xff0c;操作环境centos7.9,Gi…

【Redis原理】Redis数据结构底层原理

目录 一、SDS 二、IntSet&#xff08;整数集合&#xff09; 三、双向链表 四、压缩列表 五、字典&#xff08;哈希表&#xff09; 七、跳表 八、QuickList 九、RedisObject 一、SDS Redis 是用 C语言实现的&#xff0c;但是它没有直接使用C 语言的 char* 字符数组来实现…

C#.NET HttpClient 使用教程

简介 HttpClient 是 .NET 中用于发送 HTTP 请求和接收 HTTP 响应的现代化 API&#xff0c;它取代了过时的 WebClient 和 HttpWebRequest 类。 HttpClient 是 .NET Framework 4.5 和 .NET Core/.NET 5 中提供的、基于消息处理管道&#xff08;message handler pipeline&#…

Nginx常用安全配置指南

Nginx是一个轻量级的&#xff0c;高性能的Web服务器以及反向代理和邮箱代理服务器。它运行在UNIX、GNU、linux、BSD、Mac OS X、Solaris和Windows各种版本。根据调查统计数据显示&#xff0c;当前全球超过6%的网站使用Nginx Web服务器来管理Web网站应用。 为了保证基于Nginx的…

【UniApp 日期选择器实现与样式优化实践】

UniApp 日期选择器实现与样式优化实践 发布时间&#xff1a;2025/6/26 前言 在移动端应用开发中&#xff0c;日期选择器是一个常见且重要的交互组件。本文将分享我们在 UniApp 项目中实现自定义日期选择器的经验&#xff0c;特别是在样式优化过程中遇到的问题及解决方案。通过…

推荐系统的视频特征-视频关键帧特征提取与向量生成

&#x1f4cc; 总体流程概览 视频文件 (.mp4)↓ 关键帧抽取&#xff08;FFmpeg / SceneDetect&#xff09;↓ 帧图像&#xff08;.jpg&#xff09;↓ 图像模型提取特征&#xff08;CLIP / CNN / ViT&#xff09;↓ 多帧聚合成视频向量&#xff08;均值池化等&#xff09;↓ 向…

Apache SeaTunnel Flink引擎执行流程源码分析

目录 1. 任务启动入口 2. 任务执行命令类:FlinkTaskExecuteCommand 3. FlinkExecution的创建与初始化 3.1 核心组件初始化 3.2 关键对象说明 4. 任务执行:FlinkExecution.execute() 5. Source处理流程 5.1 插件初始化 5.2 数据流生成 6. Transform处理流程 6.1 插…

Vue 3 + Element Plus 实现「动态表单组件」详解教程

✅ Vue 3 Element Plus 实现「动态表单组件」详解教程 &#x1f4cc; 适用场景&#xff1a;表单字段根据配置动态生成&#xff0c;支持校验、提交、自定义组件、复杂布局等。 &#x1f9e9; 技术栈&#xff1a;Vue 3 TypeScript Element Plus &#x1f527; 核心特性&#x…

本地部署开源时间跟踪工具 Kimai 并实现外部访问( Windows 版本)

Kimai 是一款开源的时间跟踪工具&#xff0c;它易于使用&#xff0c;并提供了强大的报告功能&#xff0c;在个人和团队记录工作时间、项目时间和活动时间等之后可以帮助用户了解他们是如何花费时间的&#xff0c;从而提高生产力和效率。本文将详细介绍如何在 Windows 系统本地部…

系统分析师案例知识点

目录 1 必做题1.1 状态机图1.2 活动图1.3 统一软件开发过程RUP 2 需求分析2.1 数据流图DFD2.2 ER图2.3 状态转换图STD2.4 数据字典2.5 流程图2.6 需求评审2.7 设计类2.8 FAST分析2.9 常见的关系类 3 嵌入式3.1 容器技术3.2 虚拟机技术3.3 虚拟机和容器的不同点 4 数据库4.1 NoS…

多相机人脸扫描设备如何助力高效打造数字教育孪生体?

在教育数字化转型浪潮中&#xff0c;数字孪生体作为现实教育场景的虚拟映射&#xff0c;正成为智慧教育发展的关键技术支点。传统教育模式面临师资资源分布不均、个性化教学难以覆盖、跨时空教学场景受限等痛点&#xff0c;而数字孪生体通过构建高仿真虚拟教育主体&#xff08;…

用 EXCEL/WPS 实现聚类分析:赋能智能客服场景的最佳实践

聚类分析作为无监督学习的核心技术&#xff0c;能在客服数据中发现隐藏的用户群体或问题模式。尽管 Excel/WPS 并非专业统计软件&#xff0c;但巧妙利用其内置功能&#xff0c;也能实现基础的聚类分析&#xff0c;为中小型客服团队提供快速洞察。以下介绍具体方法及智能客服场景…

基于定制开发开源AI智能名片S2B2C商城小程序源码的H5游戏开发模式创新研究

摘要 本文以定制开发开源AI智能名片S2B2C商城小程序源码为技术底座&#xff0c;探讨其在H5游戏开发中的创新应用。通过分析原生开发与第三方工具两种传统开发模式的局限性&#xff0c;提出将AI智能名片的多模态内容生成能力、S2B2C商城的生态协同机制与H5游戏开发深度融合的解…

vue3+ELInput无法输入的问题

vue3ElInput无法输入的问题 开篇 写业务的时候发现&#xff0c;因为想偷懒嘛&#xff0c;直接就在想在外部去定义一个变量&#xff0c;然后写个弹窗里&#xff08;tsx&#xff09;的el-input&#xff0c;而不是又去写个vue页面&#xff0c;但发现就输入不了了&#xff0c;而且…

SQL Server:如何检测和修复 FILESTREAM 数据库损坏?

SQL Server 中的 FILESTREAM 功能可以将二进制大型对象 &#xff08;BLOB&#xff09; 存储到文件系统上&#xff0c;而不是将它们存储在数据库中。但是&#xff0c;默认情况下不启用此功能。用户需要使用 SQL Server Management Studio &#xff08;SSMS&#xff09; 和 SQL S…

FORCE 开发者论坛 | 火山引擎发布多款 Agent 开发工具

资料来源&#xff1a;火山引擎-开发者社区 6 月 12 日&#xff0c;2025 火山引擎 FORCE 原动力大会开发者论坛成功举办。大会聚焦 Agent 开发新范式&#xff0c;升级发布了 PromptPilot、MCP Servers、TRAE、扣子开发平台等产品&#xff0c;以及多款开源项目&#xff0c;构建起…

【Qt-windows】如何使用perfmon 具体分析windows serverR2的Qt程序CPU问题

可以使用 Windows 自带的 PerfMon&#xff08;Performance Monitor&#xff09; 工具对运行在 Windows Server R2 上的 Qt 程序进行详细的性能分析&#xff0c;尤其是 CPU 使用情况。以下是具体的操作步骤和建议&#xff1a; 一、打开 PerfMon 工具 按下 Win R 打开运行窗口。…