MiniMax-M1开源大模型:混合注意力与闪电机制解析与实战部署
1. 模型概览与核心设计思路
MiniMax-M1的发布,无疑是当前开源大模型领域的一枚重磅炸弹。作为全球首个公开权重的、大规模混合注意力推理模型,它直接瞄准了当前大模型应用中最核心的痛点:如何在处理超长上下文和复杂推理任务时,既保持强大的性能,又能有效控制计算成本。这背后,是MiniMax团队在模型架构和训练方法上的一次深度探索。
从技术路线上看,M1并非凭空创造,而是基于其前代模型MiniMax-Text-01进行深度演进。Text-01本身已经是一个拥有4560亿参数的庞然大物,采用了混合专家(MoE)架构,每次推理激活459亿参数。M1继承了这一庞大的参数规模,但真正的革新在于其引入了“闪电注意力”机制,并围绕“测试时计算”这一核心概念进行了系统性优化。
这里需要解释一下“测试时计算”这个概念。传统上,我们评价一个模型的“聪明”程度,主要看其训练完成后,在固定计算量下的表现。但现实世界的复杂问题,往往需要模型“多想一想”。比如,解一道奥数题,人类可能会在草稿纸上反复演算;修复一个复杂的软件Bug,工程师也需要反复推敲代码逻辑。这种“思考”的过程,对应到模型上,就是增加推理时的计算量,例如通过“思维链”生成更长的中间过程。M1的设计哲学,就是让这种“多想一想”的过程变得极其高效。
那么,M1是如何做到这一点的呢?关键在于其“混合注意力”架构与“闪电注意力”机制的协同。简单来说,混合注意力允许模型在处理不同长度和类型的序列时,动态分配计算资源。而闪电注意力则是一种高度优化的注意力计算算法,它大幅减少了处理超长序列时的内存和计算开销。官方数据显示,在处理10万token的生成任务时,M1的浮点运算量仅为DeepSeek R1的25%。这意味着,你可以用同样的硬件资源,让M1进行更深入、更长时间的“思考”,从而解决更复杂的问题。
这种设计使得M1特别适合两类任务:一是需要处理超长文档(如百万token级别的代码库、法律文书、学术论文)的理解与摘要;二是需要多步、深度推理的任务,如高级数学证明、复杂软件工程问题、需要调用多步工具完成的智能体任务。它不仅仅是一个“更大”的模型,更是一个“更会思考”的模型。
2. 模型性能深度解析与基准测试解读
评估一个模型,尤其是像M1这样的“思考型”模型,不能只看一两个榜单分数。我们需要深入到不同任务类别中,去理解其优势所在。官方提供的基准测试表格信息量巨大,我们可以从中提炼出几个关键结论。
2.1 数学与推理能力:稳居第一梯队
在AIME(美国数学邀请赛)2024和2025、MATH-500等顶级数学竞赛数据集上,M1-80K版本分别取得了86.0、76.9和96.8的高分。这个成绩是什么水平?它超越了原版DeepSeek-R1和Qwen3-235B,与最强的闭源模型如Gemini 2.5 Pro和OpenAI o3相比,虽有差距但已非常接近。特别值得注意的是,M1-40K版本与80K版本在数学上的差距并不大(AIME 2024: 83.3 vs 86.0),这说明在数学推理上,40K的“思考预算”已经能发挥出模型绝大部分潜力。对于大多数数学问题,使用40K版本可能是性价比更高的选择。
2.2 代码与软件工程:长板突出
在LiveCodeBench和FullStackBench等通用编码基准上,M1表现强劲但并非绝对领先。然而,在更具挑战性的SWE-bench Verified(真实GitHub Issue修复任务)上,M1-80K取得了56.0%的通过率,显著超越了Qwen3-235B的34.4%,并与DeepSeek-R1-0528的57.6%几乎持平。这充分证明了M1在解决真实世界、开放式软件工程问题上的强大能力。这种能力离不开其超长上下文支持,因为修复一个Issue往往需要理解整个代码文件的上下文。
2.3 长上下文理解:核心优势所在
这是M1的“杀手锏”。在OpenAI-MRCR(需从长文中提取答案)的128K版本测试中,M1-80K得分73.4,远超其他开源模型(DeepSeek-R1为51.5,Qwen3-235B仅为27.7)。更惊人的是,在1M token的版本测试中,M1-80K仍能保持56.2的得分,证明了其“百万上下文”并非营销噱头,而是实打实的能力。LongBench-v2的综合测试也印证了这一点,M1以61.5分领先于其他开源模型。如果你有处理超长文本(如整本书分析、长视频转录总结、大型代码库检索)的需求,M1是目前开源领域几乎唯一的选择。
2.4 智能体与工具使用:潜力巨大
在TAU-bench(模拟真实网站操作的任务)上,M1在航空订票和零售购物两个场景中分别取得了62.0和63.5的分数,表现全面优于Qwen3-235B和原版DeepSeek-R1,与Claude 4 Opus、Gemini 2.5 Pro等顶级闭源模型处于同一竞争区间。这显示了M1在理解复杂指令、规划多步操作、与外部环境交互方面的强大潜力,是构建复杂AI智能体的优秀基座模型。
注意:在查看基准测试结果时,务必关注其测试条件。例如,HLE(人类水平考试)任务标注了“*”,表示是在纯文本子集上测试的,未使用工具。SWE-bench也排除了14个与其内部基础设施不兼容的测试用例。这些细节说明,基准测试分数是评估模型的重要参考,但并非绝对标准,实际性能还需结合具体任务和部署环境来判断。
3. 实战部署指南:从模型下载到服务上线
拿到一个如此强大的模型,下一步就是让它跑起来为你服务。MiniMax-M1提供了两种主要的部署方式:使用vLLM进行高性能生产部署,或使用Transformers库进行更灵活的研发部署。我将以最常用的vLLM方案为例,详细拆解部署流程。
3.1 环境准备与模型下载
首先,你需要一台拥有足够GPU显存的服务器。根据经验,以BF16精度加载M1-40K模型,大约需要90GB以上的GPU显存;加载M1-80K则需要更多。因此,至少需要一张A100 80GB或H100 80GB的显卡。多卡并行可以降低单卡压力。
# 1. 创建并激活Python虚拟环境(强烈推荐) conda create -n minimax-m1 python=3.10 -y conda activate minimax-m1 # 2. 安装vLLM及其依赖 # vLLM对PyTorch和CUDA版本有要求,以下命令安装兼容性较好的版本 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install vllm # 3. 安装Hugging Face Hub工具以下载模型 pip install huggingface-hub # 4. 使用huggingface-cli下载模型(需先登录,拥有访问权限) huggingface-cli login # 下载40K版本 huggingface-cli download MiniMaxAI/MiniMax-M1-40k --local-dir ./MiniMax-M1-40k --local-dir-use-symlinks False # 或下载80K版本 # huggingface-cli download MiniMaxAI/MiniMax-M1-80k --local-dir ./MiniMax-M1-80k --local-dir-use-symlinks False下载过程会持续较长时间,因为模型文件非常大(约数百GB)。请确保磁盘有足够空间,并保持网络稳定。
3.2 使用vLLM启动推理服务
vLLM的核心优势在于其高效的PagedAttention内存管理和极高的吞吐量。启动服务非常简单:
# 基本启动命令,在单张A100 80G上运行40K模型 python -m vllm.entrypoints.openai.api_server \ --model ./MiniMax-M1-40k \ --tensor-parallel-size 1 \ --gpu-memory-utilization 0.9 \ --served-model-name minimax-m1-40k \ --max-model-len 131072 \ # 设置最大上下文长度,可根据需要调整,最高支持1M --dtype bfloat16关键参数解析:
--model: 指定本地模型路径。--tensor-parallel-size: 张量并行大小,设置为1表示单卡运行。如果你有多张GPU,可以设置为GPU数量,以实现模型并行,降低单卡显存占用。--gpu-memory-utilization: GPU内存利用率,0.9表示使用90%的显存,为系统和其他进程留出空间。--max-model-len: 这是至关重要的参数。它定义了服务端支持的最大上下文长度(输入+输出)。虽然M1支持1M上下文,但实际设置取决于你的硬件显存。设置得越高,单次请求消耗的显存越多。对于40K思考预算的模型,建议初始设置为131072(128K),平衡性能和实用性。--dtype: 模型加载精度,bfloat16在保持性能的同时显著节省显存。
服务启动后,默认会在http://localhost:8000提供一个兼容OpenAI API格式的接口。
3.3 客户端调用示例
你可以使用任何HTTP客户端或OpenAI SDK来调用服务。以下是使用Python的示例:
from openai import OpenAI # 指向本地vLLM服务 client = OpenAI( base_url="http://localhost:8000/v1", api_key="token-abc123" # vLLM默认API密钥,可在启动时通过--api-key修改 ) # 构建符合M1推荐格式的请求 response = client.chat.completions.create( model="minimax-m1-40k", # 与启动时的--served-model-name一致 messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "请解释一下量子计算的基本原理。"} ], temperature=1.0, # 使用官方推荐参数 top_p=0.95, max_tokens=2048 ) print(response.choices[0].message.content)3.4 生产环境部署优化建议
对于线上服务,你还需要考虑以下几点:
- 多GPU与量化:如果单卡显存不足,必须使用
--tensor-parallel-size进行模型并行。此外,可以探索vLLM支持的AWQ/GPTQ量化,以INT4/INT8精度运行模型,能大幅降低显存需求,但可能会轻微损失精度。 - 批处理与吞吐量:vLLM的
--max-num-batched-tokens和--max-num-seqs参数可以控制批处理大小,在高并发场景下需要仔细调优以平衡延迟和吞吐。 - API安全与监控:为API密钥设置复杂的令牌,或通过Nginx等反向代理添加认证。同时,监控服务的GPU利用率、内存使用和请求延迟。
- 上下文长度管理:虽然M1支持超长上下文,但处理1M token的请求会占用大量显存且生成速度较慢。在实际应用中,应根据业务需求合理设置
--max-model-len,并考虑对超长输入进行分段、摘要等预处理。
4. 发挥模型潜力的关键:推理参数与系统提示词工程
模型部署好了,但直接使用默认设置可能无法发挥M1的全部实力,尤其是在复杂任务上。官方文档中给出的推荐设置是一个很好的起点,但理解其背后的原理并学会根据任务调整,才是进阶使用的关键。
4.1 推理参数详解:为什么是temperature=1.0, top_p=0.95?
- Temperature (温度=1.0):这个参数控制输出的随机性。温度越高(>1.0),输出越随机、有创意但也可能不连贯;温度越低(<1.0),输出越确定、保守且倾向于高频词。对于M1这样的推理模型,设置为1.0是一个“甜点”值。它允许模型在生成“思维链”时进行适度的探索,避免陷入局部最优的、重复的推理路径,这对于解决开放式问题(如代码生成、数学证明)至关重要。相比之下,如果做事实性问答,可以适当降低温度(如0.7)以获得更稳定的答案。
- Top-p (核采样=0.95):它从概率质量最高的词汇中采样,直到累积概率达到p(这里是95%)。与top-k(固定候选词数量)相比,top-p能动态适应不同概率分布。0.95是一个较高的值,意味着模型可以从一个相对广阔的候选词池中挑选,这同样是为了促进多样性和创造性思维,避免生成过于平庸或模板化的内容。
实操心得:对于需要严格逻辑和确定答案的任务(如计算、提取固定信息),可以尝试将温度降至0.8,top_p降至0.9。而对于创意写作、头脑风暴,甚至可以尝试将温度提高到1.2。最好的方式是为你的特定任务类型做一个小范围的A/B测试。
4.2 系统提示词(System Prompt)定制化策略
系统提示词是引导模型角色和行为的最强大工具。官方给出了三个示例,我们可以将其扩展为更通用的策略。
A. 通用任务模板
你是一个乐于助人且能力强大的AI助手。请以清晰、有条理的方式回应用户的请求。对于复杂问题,请逐步推理,并在最终给出答案前进行总结。确保你的回答准确、有用且无害。这个模板在官方“You are a helpful assistant.”基础上增加了“逐步推理”和“总结”的引导,能更好地激发M1的推理能力。
B. 代码生成与审查场景对于官方给出的Web开发提示词,其核心思想是:角色扮演 + 明确输出格式 + 质量要求。我们可以将其抽象为一个更通用的代码助手提示词:
你是一位经验丰富的{编程语言}开发专家。你的任务是根据用户需求,生成完整、可运行、高质量的代码。 请遵循以下规则: 1. 深入分析需求,如有模糊之处,基于最佳实践进行合理假设并说明。 2. 输出完整的代码文件,将相关代码(如HTML、CSS、JS)整合在单个代码块内,除非用户明确要求分开。 3. 代码应包含必要的注释,遵循{语言规范,如PEP 8},并考虑错误处理和边界情况。 4. 生成后,在思维中模拟运行或检查代码逻辑,确保没有语法错误和明显的逻辑缺陷。 5. 最终只输出代码本身,除非用户要求解释。 现在,请开始处理下面的任务。使用时,替换{编程语言}和{语言规范}即可。
C. 数学与科学推理场景官方的“逐步推理并放入\boxed{}”非常经典有效。为了更深入,可以结合“费曼技巧”:
你是一位严谨的数学家/科学家。请按以下步骤解决问题: 1. **理解与重述**:用你自己的话重新表述问题,确保理解无误。 2. **计划**:概述你的解题思路和可能用到的公式、定理。 3. **分步执行**:展示每一步详细的计算和推导过程,避免跳跃。 4. **验证**:检查答案是否合理,是否满足问题中的所有条件。 5. **总结与框出答案**:简要总结方法,并将最终答案置于 \boxed{} 中。4.3 针对长上下文任务的特殊提示技巧
M1的百万上下文能力需要正确的提示来激发。简单的“总结这篇文档”可能效果一般。更好的方式是:
你是一个专业的文档分析员。我将提供一份很长的文档(约XX字/词)。 请先快速浏览全文,识别其核心主题、主要章节和关键论点。 然后,请撰写一份结构化摘要,包含: 1. 文档主旨(一句话概括)。 2. 核心论点与证据(分点列出,最多5点)。 3. 结论与潜在影响。 4. 文档中存在的任何未解决的问题或矛盾之处。 请确保你的摘要准确反映了原文的细节和 nuance(细微差别),避免引入原文没有的信息。这种提示给了模型一个清晰的“思考”框架,能更好地利用长上下文信息进行深度分析。
5. 高级功能探索:函数调用与智能体构建
MiniMax-M1支持函数调用(Function Calling),这是将其从“聊天模型”升级为“智能体”的关键。这意味着模型可以理解工具的描述,并在认为需要时,输出结构化的请求来调用这些工具。
5.1 函数调用基础流程
假设我们有一个查询天气的函数get_weather(city: string)。使用M1进行函数调用的典型流程如下:
- 定义工具:在系统提示或单独的消息中,以结构化格式(如JSON Schema)向模型描述这个函数。
- 用户提问:用户提出一个需要用到该工具的问题,例如“北京今天天气怎么样?”
- 模型决策:模型理解问题后,判断需要调用
get_weather函数,并输出一个符合预定格式的调用请求,例如{"name": "get_weather", "arguments": {"city": "北京"}}。 - 执行与返回:你的程序接收到这个请求,实际调用天气API,获取结果。
- 结果反馈:将API返回的结果(如
{"city": "北京", "temperature": "22°C", "condition": "晴"})以助理的身份再次发送给模型。 - 最终回复:模型结合函数返回的结果,生成面向用户的自然语言回答,例如“北京今天天气晴朗,气温22摄氏度。”
5.2 实战示例:构建一个多工具智能体
让我们构建一个简单的智能体,它可以使用搜索和计算器工具。
# 伪代码,展示与M1 API交互的逻辑 import json from openai import OpenAI client = OpenAI(base_url="http://localhost:8000/v1", api_key="your-key") # 1. 定义可用的工具 tools = [ { "type": "function", "function": { "name": "search_web", "description": "在互联网上搜索最新信息。", "parameters": { "type": "object", "properties": { "query": {"type": "string", "description": "搜索关键词"} }, "required": ["query"] } } }, { "type": "function", "function": { "name": "calculate", "description": "执行数学计算。", "parameters": { "type": "object", "properties": { "expression": {"type": "string", "description": "数学表达式,如 '2+3*sin(30)'"} }, "required": ["expression"] } } } ] # 2. 系统提示词,告知模型可用工具 system_prompt = f""" 你是一个智能助手,可以调用工具来帮助用户。 以下是你可以使用的工具: {json.dumps(tools, indent=2)} 当你需要用到这些工具时,请直接输出对应的函数调用请求。 """ messages = [{"role": "system", "content": system_prompt}] # 3. 用户提问一个复杂问题 user_query = “请先搜索‘2025年奥运会举办城市’,然后计算该城市与我所在城市‘上海’的时差(假设该城市是巴黎)。” messages.append({"role": "user", "content": user_query}) # 4. 首次调用模型,期望它规划工具调用 response = client.chat.completions.create( model="minimax-m1-40k", messages=messages, temperature=0.8, # 工具调用可适当降低随机性 tool_choice="auto", # 让模型自行决定是否及如何调用工具 tools=tools ) message = response.choices[0].message print(f"模型回复: {message}") # 5. 检查回复中是否包含工具调用 if message.tool_calls: for tool_call in message.tool_calls: func_name = tool_call.function.name args = json.loads(tool_call.function.arguments) # 6. 模拟执行工具 if func_name == "search_web": # 模拟搜索返回结果 result = f"根据网络搜索,{args['query']}的结果是:2025年奥运会将在法国巴黎举行。" elif func_name == "calculate": # 这里需要解析表达式,假设我们有一个简单的计算器 # 时差计算:巴黎(UTC+1)与上海(UTC+8)时差为7小时(上海比巴黎快7小时) result = f"计算表达式 {args['expression']} 的结果是:-7小时(巴黎比上海晚7小时)。" # 7. 将工具执行结果作为新的消息追加 messages.append(message) # 先追加模型的上一条消息 messages.append({ "role": "tool", "tool_call_id": tool_call.id, "content": result }) # 8. 再次调用模型,让它基于工具结果生成最终回答 second_response = client.chat.completions.create( model="minimax-m1-40k", messages=messages, temperature=0.8 ) final_answer = second_response.choices[0].message.content print(f"\n最终回答: {final_answer}")5.3 函数调用实战避坑指南
- 工具描述要清晰精确:函数的
description和参数的description至关重要。模糊的描述会导致模型错误调用。例如,“获取数据”不如“根据股票代码查询实时股价”明确。 - 处理模型“幻觉”调用:有时模型可能会调用不存在的工具或参数格式错误。你的代码需要健壮的错误处理,比如捕获
JSONDecodeError,并可以回复模型一个错误信息,让它重新尝试。 - 多轮对话中的状态管理:在复杂的多轮对话中,需要维护完整的消息历史(包括所有工具调用和返回),这样模型才能理解当前对话的上下文。
- 并行工具调用:M1可能支持在一个回复中输出多个工具调用请求。你的后端需要能够处理这种并行请求,并等待所有结果返回后再一并反馈给模型。
6. 性能调优与问题排查实录
在实际部署和使用M1的过程中,你肯定会遇到各种性能问题和意料之外的行为。以下是我在测试中遇到的一些典型问题及解决方案。
6.1 显存不足(OOM)问题
这是部署大模型最常见的问题。
- 症状:启动vLLM时直接报错,或处理长上下文请求时崩溃,提示CUDA out of memory。
- 排查与解决:
- 降低精度:确保使用
--dtype bfloat16。如果依然OOM,可以考虑尝试--dtype float16,但注意兼容性。 - 启用量化:这是最有效的显存节省手段。vLLM支持AWQ/GPTQ量化。你需要先找到或自己生成模型的量化版本(如4bit权重),然后使用
--quantization awq或gptq参数启动。这可以将显存占用降低至原来的1/3到1/2。 - 减少并行度:如果使用多卡,检查
--tensor-parallel-size是否设置正确。有时错误设置会导致每张卡都加载完整模型。 - 限制上下文长度:显存消耗与
--max-model-len的平方成正比(对于注意力机制)。如果业务不需要超长上下文,果断将其从1M降低到128K或64K,显存需求会大幅下降。 - 调整vLLM内存管理:
--gpu-memory-utilization可以微调,--block-size(默认16)可以尝试调整为8或32,影响内存碎片和利用率。
- 降低精度:确保使用
6.2 生成速度慢
- 症状:每个token的生成耗时很长,吞吐量低。
- 排查与解决:
- 检查GPU利用率:使用
nvidia-smi命令查看GPU-Util是否接近100%。如果很低,可能是CPU预处理或IO成为瓶颈。 - 启用批处理:vLLM的强项在于批处理。通过调整
--max-num-batched-tokens和--max-num-seqs来增加批量大小,可以显著提升吞吐量。但注意,更大的批次会增加延迟。 - 使用更快的GPU:M1这样的模型对内存带宽非常敏感。从A100升级到H100,或使用HBM3e高带宽内存的显卡,生成速度会有质的提升。
- 检查输入长度:处理非常长的输入(如500K token)时,模型在生成第一个token前的“预填充”阶段会消耗大量时间。这是注意力计算的固有成本。考虑是否可以对输入进行压缩或摘要。
- 检查GPU利用率:使用
6.3 模型输出不符合预期
- 症状:回答偏离主题、逻辑混乱、或未遵循指令。
- 排查与解决:
- 确认系统提示词:这是最常见的原因。确保系统提示词清晰、无歧义,并且被正确放置在
messages列表的开头。 - 调整推理参数:如果输出过于天马行空,降低
temperature(如从1.0到0.7)和top_p(如到0.9)。如果输出过于重复或保守,则适当提高。 - 检查上下文截断:如果对话历史或输入文档太长,超过了
--max-model-len,vLLM会从最早的消息开始截断。这可能导致模型“忘记”关键的早期指令。确保你的最大长度设置足够容纳所有必要信息,或实现一个更智能的上下文窗口管理策略(如只保留最近N轮对话和系统提示)。 - 功能调用失败:如果模型不调用你期望的工具,首先检查工具描述是否足够清晰。其次,可以在系统提示中更强烈地引导,例如“你必须使用提供的工具来回答问题”。还可以在用户问题中隐含提示,例如“请用计算器工具算一下...”。
- 确认系统提示词:这是最常见的原因。确保系统提示词清晰、无歧义,并且被正确放置在
6.4 服务稳定性问题
- 症状:服务运行一段时间后崩溃,或出现内存泄漏。
- 排查与解决:
- 监控显存:使用
nvidia-smi -l 1持续监控显存变化。如果显存使用量缓慢增长,可能是内存泄漏。尝试更新vLLM到最新版本。 - 限制请求速率:如果突然涌入大量长上下文请求,可能导致OOM。在API网关层设置速率限制和最大token限制。
- 日志与监控:确保vLLM的日志输出到文件,并监控关键指标(请求数、错误率、平均延迟)。使用Prometheus+Grafana等工具建立监控看板。
- 监控显存:使用
7. 未来展望与生态结合
MiniMax-M1的发布不仅是一个模型的亮相,更代表了一种趋势:开源模型正在向更深的推理能力和更高效的测试时计算迈进。对于开发者和研究者而言,围绕M1可以探索的方向非常多。
7.1 与MCP(Model Context Protocol)生态结合
官方提到了 MiniMax MCP Server ,这是一个非常重要的信号。MCP是一种新兴的协议,旨在标准化AI模型与外部工具、数据源之间的连接。通过MCP服务器,M1可以轻松接入视频生成、图像生成、语音合成等各类工具,成为一个功能更全面的多模态智能体中枢。对于企业开发者来说,基于M1和MCP构建内部业务自动化流程,将是一个高效的选择。
7.2 微调与领域适配
虽然M1是一个强大的通用基础模型,但在特定垂直领域(如医疗、金融、法律),通过继续预训练或有监督微调(SFT)进行领域适配,能产生更大的商业价值。由于其开放的权重和架构,研究人员可以对其进行各种微调实验。需要注意的是,对如此大规模的MoE模型进行全参数微调成本极高,可以优先考虑LoRA、QLoRA等参数高效微调方法。
7.3 智能体框架的深度集成
M1在TAU-Bench上的优秀表现,使其成为构建复杂智能体的理想“大脑”。可以将其与AutoGPT、LangChain、CrewAI等智能体框架深度集成。利用其长上下文能力,智能体可以维护更长的操作历史和更复杂的计划;利用其强大的推理能力,可以做出更精准的决策和工具调用规划。
从我个人的实际测试和行业观察来看,MiniMax-M1确实在长上下文和深度推理任务上树立了新的开源标杆。它的价值不仅仅在于榜单分数,更在于为社区提供了一个可深入研究、可自由构建的先进架构范本。无论是想体验百万上下文摘要的研究者,还是需要构建复杂AI应用的工程师,M1都提供了一个强大而开放的起点。当然,强大的能力也伴随着对算力的高要求,如何在实际业务中平衡性能、成本与效果,将是每个团队需要仔细权衡的课题。
