Files
pages/2025/05/07/mac-studio.html
2025-12-31 16:00:29 +00:00

511 lines
32 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Mac Studio M3 Ultra使用体验 | Mayx的博客</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="Mac Studio M3 Ultra使用体验" />
<meta name="author" content="mayx" />
<meta property="og:locale" content="zh_CN" />
<meta name="description" content="使用最强的Macintosh是一种什么样的感受" />
<meta property="og:description" content="使用最强的Macintosh是一种什么样的感受" />
<meta property="og:site_name" content="Mayx的博客" />
<meta property="og:type" content="article" />
<meta property="article:published_time" content="2025-05-07T00:00:00+08:00" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Mac Studio M3 Ultra使用体验" />
<meta name="google-site-verification" content="huTYdEesm8NaFymixMNqflyCp6Jfvd615j5Wq1i2PHc" />
<meta name="msvalidate.01" content="0ADFCE64B3557DC4DC5F2DC224C5FDDD" />
<meta name="yandex-verification" content="fc0e535abed800be" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"mayx"},"dateModified":"2025-05-07T00:00:00+08:00","datePublished":"2025-05-07T00:00:00+08:00","description":"使用最强的Macintosh是一种什么样的感受","headline":"Mac Studio M3 Ultra使用体验","mainEntityOfPage":{"@type":"WebPage","@id":"/2025/05/07/mac-studio.html"},"publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://avatars0.githubusercontent.com/u/17966333"},"name":"mayx"},"url":"/2025/05/07/mac-studio.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="canonical" href="https://mabbs.github.io/2025/05/07/mac-studio.html" />
<link type="application/atom+xml" rel="alternate" href="/atom.xml" title="Mayx的博客" />
<link rel="alternate" type="application/rss+xml" title="Mayx的博客(RSS)" href="/rss.xml" />
<link rel="alternate" type="application/json" title="Mayx的博客(JSON Feed)" href="/feed.json" />
<link rel="stylesheet" href="/assets/css/style.css?v=1767196818" />
<!--[if !IE]> -->
<link rel="stylesheet" href="/Live2dHistoire/live2d/css/live2d.css" />
<!-- <![endif]-->
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Mayx的博客" />
<link rel="webmention" href="https://webmention.io/mabbs.github.io/webmention" />
<link rel="pingback" href="https://webmention.io/mabbs.github.io/xmlrpc" />
<link rel="preconnect" href="https://summary.mayx.eu.org" crossorigin="anonymous" />
<link rel="prefetch" href="https://www.blogsclub.org/badge/mabbs.github.io" as="image" />
<link rel="blogroll" type="text/xml" href="/blogroll.opml" />
<link rel="me" href="https://github.com/Mabbs" />
<script src="/assets/js/jquery.min.js"></script>
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.3/jquery.xdomainrequest.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script>
var lastUpdated = new Date("Thu, 01 Jan 2026 00:00:18 +0800");
var BlogAPI = "https://summary.mayx.eu.org";
</script>
<script src="/assets/js/main.js"></script>
<!--[if !IE]> -->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="async" src="https://www.googletagmanager.com/gtag/js?id=UA-137710294-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-137710294-1');
</script>
<script src="/assets/js/instant.page.js" type="module"></script>
<!-- <![endif]-->
</head>
<body>
<!--[if !IE]> --><noscript><marquee style="top: -15px; position: relative;"><small>发现当前浏览器没有启用JavaScript这不影响你的浏览但可能会有一些功能无法使用……</small></marquee></noscript><!-- <![endif]-->
<!--[if IE]><marquee style="top: -15px; position: relative;"><small>发现当前浏览器为Internet Explorer这不影响你的浏览但可能会有一些功能无法使用……</small></marquee><![endif]-->
<div class="wrapper">
<header class="h-card">
<h1><a class="u-url u-uid p-name" rel="me" href="/">Mayx的博客</a></h1>
<img src="https://avatars0.githubusercontent.com/u/17966333" fetchpriority="high" class="u-photo" alt="Logo" style="width: 90%; max-width: 300px; max-height: 300px;" />
<p class="p-note">Mayx's Home Page</p>
<form action="/search.html">
<input type="text" name="keyword" id="search-input-all" placeholder="Search blog posts.." />&#160;<input type="submit" value="搜索" />
</form>
<br />
<p class="view"><a class="u-url" href="/Mabbs/">About me</a></p>
<ul class="downloads">
<li style="width: 270px; border-right: none;"><a href="/MayxBlog.tgz">Download <strong>TGZ File</strong></a></li>
</ul>
</header>
<section class="h-entry">
<small><time class="date dt-published" datetime="2025-05-07T00:00:00+08:00">7 May 2025</time> - 字数统计6207 - 阅读大约需要21分钟 - Hits: <span id="/2025/05/07/mac-studio.html" class="visitors">Loading...</span></small>
<h1 class="p-name">Mac Studio M3 Ultra使用体验</h1>
<p class="view">by <a class="p-author h-card" href="//github.com/Mabbs">mayx</a></p>
<div id="outdate" style="display:none;">
<hr /><p>
这是一篇创建于 <span id="outime"></span> 天前的文章,其中的信息可能已经有所发展或是发生改变。
</p>
</div>
<script>
daysold = Math.floor((new Date().getTime() - new Date("Wed, 07 May 2025 00:00:00 +0800").getTime()) / (24 * 60 * 60 * 1000));
if (daysold > 90) {
document.getElementById("outdate").style.display = "block";
document.getElementById("outime").innerHTML = daysold;
}
</script>
<hr />
<b>AI摘要</b>
<p id="ai-output">本文作者分享了Mac Studio M3 Ultra的使用体验。主要集中在以下几个方面
1. **远程使用体验:** macOS远程配置简单支持高性能屏幕共享模式但对网络要求高。
2. **LLM体验** 尝试了Xinference和LM Studio框架前者存在问题后者性能较好但遇到DeepSeek模型输出问题。测试了Qwen3模型在部分任务上表现优于DeepSeek-R1。
3. **模型对比:** Qwen3在生成流程图方面不如DeepSeek-R1。
4. **UTM虚拟机测试** 在Mac Studio上使用VZ框架安装Windows失败Asahi Linux不支持M3 Ultra测试也未成功。
5. **总结:** Mac Studio M3 Ultra的512GB内存性能强大本地跑LLM速度快但作者并无其他高性能需求觉得有些浪费。</p>
<hr />
<ul><li><a href="#起因">起因</a></li><li><a href="#远程体验">远程体验</a></li><li><a href="#关于llm的体验">关于LLM的体验</a><ul><li><a href="#配置环境">配置环境</a></li><li><a href="#模型对比">模型对比</a></li></ul></li><li><a href="#utm虚拟机的测试">UTM虚拟机的测试</a></li><li><a href="#感想">感想</a></li></ul>
<hr />
<main class="post-content e-content" role="main"><p>使用最强的Macintosh是一种什么样的感受<!--more--></p>
<h1 id="起因">
<a href="#起因"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 起因
</h1>
<p>在两个月前苹果公司出了一款可以选配超大统一内存512GiB的Mac Studio那时候我还<a href="/2025/03/08/llm2.html#%E5%85%B3%E4%BA%8E%E6%96%B0%E5%87%BA%E7%9A%84mac-studio%E7%9A%84%E7%9C%8B%E6%B3%95">想着如果市场反应好就整台玩玩</a>,现在从网上的各种反应来看这确实是一个很不错的产品,所以这次我就整来啦!所以这次就来谈谈初上手的体验吧~</p>
<h1 id="远程体验">
<a href="#远程体验"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 远程体验
</h1>
<p>虽然Mac Studio理论上拿来剪电影之类的应该是更好的选择但是显然我不会剪电影🤣而且也没有合适的屏幕给它用所以拿到手之后我需要让它可以远程使用。 </p><p>
macOS配置远程还是挺简单的只需要在设置 -&gt; 通用 -&gt; 共享中打开远程管理就可以了似乎现在Ubuntu也可以像这样轻松地配置远程桌面配置好之后需要启用“任何人都可以请求取得控制屏幕的权限”选项不然可能会连不上…… </p><p>
另外如果需要配置SSH也只需要打开远程登录即可最好把“允许远程用户对磁盘进行完全访问”也打开免得使用时还需要额外的操作。 </p><p>
其实开启远程没什么特别的不过我发现在远程Mac Studio时和我远程Intel芯片的<a href="/2024/08/17/mac-mini.html">Mac mini 2018</a>以及<a href="/2024/06/16/hackintosh.html">黑苹果</a>有一个不一样的地方,那就是屏幕共享类型可以选择“<a href="https://support.apple.com/zh-cn/guide/remote-desktop/apdf8e09f5a9/mac">高性能</a>在这个模式下远程的屏幕就可以变成一块虚拟屏幕不受Mac连接的屏幕分辨率所影响可以配置动态分辨率。即使连接的屏幕不支持HiDPI只要远程的客户端支持那就可以支持这一点和Windows的远程桌面有点像但是体验好太多了使用起来和本地几乎没有差别当然代价就是对网络要求特别高基本上如果不是局域网内远程就不能使用这个模式。 </p><p>
在我配置好远程后我就可以拔掉屏幕然后把Mac Studio放在阴暗的角落里为我服务了😆。</p>
<h1 id="关于llm的体验">
<a href="#关于llm的体验"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 关于LLM的体验
</h1>
<h2 id="配置环境">
<a href="#配置环境"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 配置环境
</h2>
<p>买这个设备的当然也不为别的主要就是为了能在本地跑完整参数的DeepSeek-R1或者类似的MoE模型。至于KTransformers方案考虑到按照正价买要更贵当然有便宜的购买方案但是太不可靠了而且这个框架也不够成熟所以就算了。 </p><p>
在Mac上运行LLM有很多框架最开始我选择的是<a href="https://github.com/xorbitsai/inference">Xinference</a>,因为看它的<a href="https://inference.readthedocs.io/zh-cn/latest/user_guide/backends.html#mlx">文档</a>中特地提到了苹果的<a href="https://github.com/ml-explore/mlx">MLX</a>框架,而且可以使用命令启动,方便维护,另外看它支持的模型种类也比较多,所以就先考虑了它。 </p><p>
按照官方文档安装后就可以配置模型了虽然它可以直接一键下载并运行模型但是我已经提前下好了模型另外……如果光运行DeepSeek-R1感觉也没啥意思不如试试Perplexity AI的<a href="https://huggingface.co/mlx-community/perplexity-ai-r1-1776-4bit">某个Finetune模型</a>😆所以我需要手动注册模型。配置好之后在MaxKB中配置好地址就可以使用了。 </p><p>
刚开始测试的时候倒是没啥问题吐字的速度确实是挺快但是用了几下就发现有不少问题比如每次调用LLM的时候会发现内存压力会上升APP内存会变成联动内存在这个期间GPU并不会工作需要等几秒钟在生成结束的时候内存压力又会下降联动内存会变回APP内存每次生成都是这样。另外如果上文很长就要等几分钟而且如果上文特别长的情况爆内存程序会直接卡死还有并发也会导致程序卡死……总的来说这个框架根本不适合生产环境使用而且文档也写的极其糟糕看来是我看走眼了不应该选择Xinference。 </p><p>
在抛弃Xinference之后我想了想还是随大流吧选择了<a href="https://github.com/lmstudio-ai">LM Studio</a>,虽然它需要远程桌面操作,但是配置好之后应该也没有什么太多需要修改的地方,主要是社区相对要活跃得多,出了问题也好解决。 </p><p>
在我安装好LM Studio后发现这个支持的功能要多不少啊还支持KV Cache量化有了这个就可以支持更长的上下文了另外它还支持超出上下文之后选择截断还是滚动看起来使用非常的友好。 </p><p>
当我对LM Studio充满期待的时候问题就来了我随便问了些问题然后它回答的时候不知道什么情况会随机莫名其妙的冒出“&lt;begin▁of▁sentence&gt;出现这个之后后面的内容就会胡乱生成内容怎么调都没法解决……后来看了一下DeepSeek的<a href="https://github.com/deepseek-ai/DeepSeek-R1/issues/352">Issue里</a>提到了似乎需要在模板中添加“&lt;think&gt;”标签才可以……但是这样的结果就是输出开头没有“&lt;think&gt;”了MaxKB解析会出问题……这个问题的话回头看怎么解决吧至少在模板中加上这个能正常使用了。LM Studio不会每次请求都重新加载一遍模型输出第一个字的速度比Xinference快了很多后面生成的速度也很快输出的速度能接近20T/s相比来说还是更有用一些。</p>
<h2 id="模型对比">
<a href="#模型对比"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 模型对比
</h2>
<p>在我测试完DeepSeek-R1的某个微调模型后最近阿里又出了一系列新模型<a href="https://huggingface.co/collections/Qwen/qwen3-67dd247413f0e2e4f653967f">Qwen3</a>支持根据问题进行推理据说它的235B参数的MoE模型比DeepSeek-R1还厉害如果是真的那就不需要用DeepSeek-R1了虽然Mac Studio可以运行DeepSeek但是512GiB内存也只能运行4位量化的DeepSeek-R1而235B的Qwen3则可以用8位量化还能空出不少内存用于上下文想来应该效果会比DeepSeek好很多吧于是我就下载试了试然而刚下载好之后居然不能运行😅首先是这个模型太新了运行前需要把运行库的版本更新到最新另外默认的模板有问题解析会报错需要根据<a href="https://github.com/lmstudio-ai/lmstudio-bug-tracker/issues/630">这个Issue</a>修改一下才能正常运行😅。在一切准备好之后,就可以进行测试了。 </p><p>
首先我试了试一些比较简单的问题Qwen3回答的都还不错例如24点、内容填空之类的效果比QwQ-32B好了不少。测试的时候输出的速度和671B 4位量化的DeepSeek-R1基本一致。随后我让它用Mermaid绘制我以前写的<a href="/2024/07/03/ai-summary.html">AI摘要脚本</a>的流程图Qwen3绘制的结果是</p>
<pre><code class="language-mermaid">graph TD
A[开始] --&gt; B{解析URL路径}
B --&gt;|/summary| C1[查询内容]
C1 --&gt; D1{是否存在内容?}
D1 -- 是 --&gt; E1[构建AI摘要提示词]
E1 --&gt; F1[调用Qwen模型生成流式响应]
F1 --&gt; G1[返回SSE流]
D1 -- 否 --&gt; H1[返回'No Record']
B --&gt;|/get_summary| C2[查询内容]
C2 --&gt; D2{是否存在内容?}
D2 -- 否 --&gt; H2[返回'no']
D2 -- 是 --&gt; I2[计算内容SHA-256]
I2 --&gt; J2{哈希匹配?}
J2 -- 否 --&gt; H3[返回'no']
J2 -- 是 --&gt; K2[查询摘要]
K2 --&gt; L2{是否有摘要?}
L2 -- 是 --&gt; M2[返回现有摘要]
L2 -- 否 --&gt; N2[调用Qwen生成新摘要]
N2 --&gt; O2[存储摘要到数据库]
O2 --&gt; M2
B --&gt;|/is_uploaded| C3[查询内容]
C3 --&gt; D3{是否存在内容?}
D3 -- 否 --&gt; H4[返回'no']
D3 -- 是 --&gt; I3[计算内容SHA-256]
I3 --&gt; J3{哈希匹配?}
J3 -- 否 --&gt; H5[返回'no']
J3 -- 是 --&gt; K3[返回'yes']
B --&gt;|/upload_blog| C4{POST方法?}
C4 -- 否 --&gt; H6[返回'need post']
C4 -- 是 --&gt; I4[获取请求文本]
I4 --&gt; J4[查询现有内容]
J4 --&gt; K4{是否存在?}
K4 -- 否 --&gt; L4[插入新内容]
K4 -- 是 --&gt; M4{内容是否改变?}
L4 --&gt; N4[返回'OK']
M4 -- 是 --&gt; O4[更新内容并清空摘要]
O4 --&gt; N4
B --&gt;|/count_click*| C5[计算ID的MD5]
C5 --&gt; D5[查询计数器]
D5 --&gt; E5{是否含路径_add?}
E5 -- 是 --&gt; F5[更新计数器+1]
E5 -- 否 --&gt; G5[保持原值]
F5 --&gt; H5[返回最新计数]
B --&gt;|其他路径| I6[重定向到GitHub]
</code></pre>
<p>DeepSeek-R1的某个微调模型的结果是</p>
<pre><code class="language-mermaid">graph TD
A[接收请求] --&gt; B{解析URL路径}
B --&gt; |路径为/summary| C[获取查询参数id]
C --&gt; D{id是否为null?}
D --&gt;|是| E[返回错误响应]
D --&gt;|否| F[查询数据库内容]
F --&gt; G{内容存在?}
G --&gt;|否| H[返回'No Record']
G --&gt;|是| I[构建消息,调用AI生成摘要流]
I --&gt; J[返回流式响应]
B --&gt; |路径为/get_summary| K[获取id和签名参数]
K --&gt; L[查询数据库内容]
L --&gt; M{内容存在?}
M --&gt;|否| N[返回'no']
M --&gt;|是| O[计算SHA-256签名]
O --&gt; P{签名匹配?}
P --&gt;|否| Q[返回'no']
P --&gt;|是| R[检查是否已有摘要]
R --&gt;|有摘要| S[返回摘要内容]
R --&gt;|无摘要| T[调用AI生成摘要]
T --&gt; U[更新数据库]
U --&gt; S
B --&gt; |路径为/is_uploaded| V[获取id和签名]
V --&gt; W[查询数据库内容]
W --&gt; X{内容存在?}
X --&gt;|否| Y[返回'no']
X --&gt;|是| Z[计算SHA-256签名]
Z --&gt; AA{签名匹配?}
AA --&gt;|否| AB[返回'no']
AA --&gt;|是| AC[返回'yes']
B --&gt; |路径为/upload_blog| AD{方法是否为POST?}
AD --&gt;|否| AE[返回'need post']
AD --&gt;|是| AF[读取请求体数据]
AF --&gt; AG[查询现有内容]
AG --&gt; AH{记录存在?}
AH --&gt;|否| AI[插入新记录]
AH --&gt;|是| AJ{内容是否相同?}
AJ --&gt;|否| AK[更新内容并清空摘要]
AJ --&gt;|是| AL[直接返回OK]
AK --&gt; AL
AL --&gt; AM[返回'OK']
B --&gt; |路径为/count_click| AN[计算MD5哈希]
AN --&gt; AO[查询当前计数]
AO --&gt; AP{记录存在?}
AP --&gt;|否| AQ[插入新计数]
AP --&gt;|是| AR[增加计数]
AR --&gt; AS[更新计数器]
AQ --&gt; AS
AS --&gt; AT[返回当前计数值]
B --&gt; |其他路径| AU[重定向到GitHub页面]
style A fill:#f9f,stroke:#333,stroke-width:2px
style E fill:#f96,stroke:#333
style H fill:#f96,stroke:#333
style Q fill:#f96,stroke:#333
style N fill:#f96,stroke:#333
style S fill:#9f9,stroke:#333
style AC fill:#9f9,stroke:#333
style AM fill:#9f9,stroke:#333
style AT fill:#9f9,stroke:#333
style AU fill:#99f,stroke:#333
subgraph 函数调用
O -.-&gt;|调用sha函数| SHA[计算SHA-256]
AN -.-&gt;|调用md5函数| MD5[计算MD5]
end
subgraph 数据库操作
F --&gt; DB1[SELECT content]
L --&gt; DB2[SELECT content]
R --&gt; DB3[SELECT summary]
T --&gt; DB4[UPDATE summary]
AG --&gt; DB5[SELECT content]
AI --&gt; DB6[INSERT新记录]
AK --&gt; DB7[UPDATE content]
AO --&gt; DB8[SELECT counter]
AQ --&gt; DB9[INSERT计数器]
AR --&gt; DB10[UPDATE counter]
end
subgraph AI处理
I --&gt; AI1[构建系统提示]
AI1 --&gt; AI2[调用Qwen模型]
T --&gt; AI3[调用Qwen模型]
end
</code></pre>
<p>这下就高下立判了🤣同样的问题Qwen3只绘制了基础流程图而DeepSeek-R1不仅包含子流程图还通过颜色区分了响应类型这么看来Qwen3还是不太行啊当然我的测试非常的片面仅仅根据这几次测试分析的结果。至于Qwen3到底有没有使用价值回头再让其他人测测看效果如何吧。</p>
<h1 id="utm虚拟机的测试">
<a href="#utm虚拟机的测试"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> UTM虚拟机的测试
</h1>
<p>在上次<a href="/2025/03/25/utm.html">在UTM上用苹果虚拟化框架安装Windows</a>的测试中我用的是Intel芯片的Mac那时候已经说了打算等Mac Studio到了之后尝试一下用VZ框架安装Windows。那么经过我的测试结果如何呢想不到居然失败了😭相同的操作流程在重装脚本执行完后再重启就没有任何反应了。在活动监视器中虽然可以看到虚拟机的CPU占用是100%但是内存只占用了100多MiB而且CPU占用没有任何跳变显然系统没有正常启动。随后我又尝试在QEMU中安装好Windows然后把VZ虚拟机的硬盘替换掉结果依旧一样内存还是只占了100多MiB……看来ARM处理器和x86处理器还是有很大区别啊…… </p><p>
不过这个虚拟机到底有什么区别为什么会无法启动呢想到我在Intel芯片的Mac中测试用VZ框架是可以看到CPU型号的再看看Mac Studio中的Linux虚拟机……似乎没有任何与CPU型号有关的信息用QEMU至少也能看到类似“virt”之类的CPU型号用VZ框架就什么信息都没有了……看来Apple芯片和正常的ARM处理器还是有不少区别啊…… </p><p>
不过除了这个以外还有什么有意思的东西可以测试吗?这时候我就想到了<a href="https://github.com/AsahiLinux">Asahi Linux</a>Apple芯片下的UTM有一个多出来的选项就是可以安装macOS虚拟机那我能不能在macOS虚拟机中安装Asahi Linux呢根据我的实际测试结果也是不行的……因为Asahi Linux不支持M3 Ultra芯片😞至于M2芯片能不能在虚拟机中运行Asahi Linux……虽然我的MacBook是M2芯片但是不太想在我常用的机器上搞测试所以也不知道实际上可不可以。另外Asahi Linux这个项目也基本上停了估计以后新出的芯片也不会有机会安装Linux了就像在macOS上运行Windows程序的<a href="https://github.com/Whisky-App/Whisky">Whisky</a>项目也停了……真是太遗憾了😢。</p>
<h1 id="感想">
<a href="#感想"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 感想
</h1>
<p>从这次体验来看512GiB内存的Mac Studio M3 Ultra确实很厉害本地跑LLM速度非常快20T/s的速度已经很厉害了而且风扇声音很小在GPU满载的时候也完全听不到风扇的声音。当然这个前提是跑MoE模型虽然我没测Dense模型但想来根据M3 Ultra的算力跑70B参数的模型肯定是达不到20T/s的至于更大的模型估计速度就慢的不能看了……不过不影响这已经够我用了。 </p><p>
至于除LLM以外的用途……我似乎没有什么能用到这么强性能以及这么大内存的地方了……其实还是挺浪费的但是也没办法毕竟我又不会剪电影啊🤣。</p>
<script type="module">
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
mermaid.initialize({ startOnLoad: false });
await mermaid.run({
querySelector: '.language-mermaid',
});
</script></main>
<small style="display: block">tags: <a rel="category tag" class="p-category" href="/search.html?keyword=Apple"><em>Apple</em></a> - <a rel="category tag" class="p-category" href="/search.html?keyword=Mac"><em>Mac</em></a> - <a rel="category tag" class="p-category" href="/search.html?keyword=AI"><em>AI</em></a> - <a rel="category tag" class="p-category" href="/search.html?keyword=LLM"><em>LLM</em></a> <span style="float: right;"><a href="https://gitlab.com/mayx/mayx.gitlab.io/tree/master/_posts/2025-05-07-mac-studio.md">查看原始文件</a></span></small>
<h4 style="border-bottom: 1px solid #e5e5e5;margin: 2em 0 5px;">推荐文章</h4>
<p id="suggest-container">Loading...</p>
<script>
var suggest = $("#suggest-container");
$.get(BlogAPI + "/suggest?id=/2025/05/07/mac-studio.html&update=" + lastUpdated.valueOf(), function (data) {
if (data.length) {
getSearchJSON(function (search) {
suggest.empty();
var searchMap = {};
for (var i = 0; i < search.length; i++) {
searchMap[search[i].url] = search[i];
}
var tooltip = $('<div class="content-tooltip"></div>').appendTo('body').hide();
for (var j = 0; j < data.length; j++) {
var item = searchMap[data[j].id];
if (item) {
var link = $('<a href="' + item.url + '">' + item.title + '</a>');
var contentPreview = item.content.substring(0, 100);
if (item.content.length > 100) {
contentPreview += "……";
}
link.hover(
function(e) {
tooltip.text($(this).data('content'))
.css({
top: e.pageY + 10,
left: e.pageX + 10
})
.show();
},
function() {
tooltip.hide();
}
).mousemove(function(e) {
tooltip.css({
top: e.pageY + 10,
left: e.pageX + 10
});
}).data('content', contentPreview);
suggest.append(link);
suggest.append(' - ' + item.date + '<br />');
}
}
});
} else {
suggest.html("暂无推荐文章……");
}
});
</script>
<br />
<div class="pagination">
<span class="prev">
<a href="/2025/04/22/ai-limit.html">
上一篇关于LLM上限的探索
</a>
</span>
<br />
<span class="next">
<a href="/2025/06/02/optimize.html">
下一篇:近期对博客的修改与优化记录
</a>
</span>
</div>
<!--[if !IE]> -->
<link rel="stylesheet" href="/assets/css/gitalk.css">
<script src="/assets/js/gitalk.min.js"></script>
<div id="gitalk-container"></div>
<script>
var gitalk = new Gitalk({
clientID: '36557aec4c3cb04f7ac6',
clientSecret: 'ac32993299751cb5a9ba81cf2b171cca65879cdb',
repo: 'mabbs.github.io',
owner: 'Mabbs',
admin: ['Mabbs'],
id: '/2025/05/07/mac-studio', // Ensure uniqueness and length less than 50
distractionFreeMode: false, // Facebook-like distraction free mode
proxy: "https://cors-anywhere.mayx.eu.org/?https://github.com/login/oauth/access_token"
})
gitalk.render('gitalk-container')
</script>
<!-- <![endif]-->
</section>
<!--[if !IE]> -->
<div id="landlord" style="left:5px;bottom:0px;">
<div class="message" style="opacity:0"></div>
<canvas id="live2d" width="500" height="560" class="live2d"></canvas>
<div class="live_talk_input_body">
<form id="live_talk_input_form">
<div class="live_talk_input_name_body" >
<input type="checkbox" id="load_this" />
<input type="hidden" id="post_id" value="/2025/05/07/mac-studio.html" />
<label for="load_this">
<span style="font-size: 11px; color: #fff;">&#160;想问这篇文章</span>
</label>
</div>
<div class="live_talk_input_text_body">
<input name="talk" type="text" class="live_talk_talk white_input" id="AIuserText" autocomplete="off" placeholder="要和我聊什么呀?" />
<button type="submit" class="live_talk_send_btn" id="talk_send">发送</button>
</div>
</form>
</div>
<input name="live_talk" id="live_talk" value="1" type="hidden" />
<div class="live_ico_box" style="display:none;">
<div class="live_ico_item type_info" id="showInfoBtn"></div>
<div class="live_ico_item type_talk" id="showTalkBtn"></div>
<div class="live_ico_item type_music" id="musicButton"></div>
<div class="live_ico_item type_youdu" id="youduButton"></div>
<div class="live_ico_item type_quit" id="hideButton"></div>
<input name="live_statu_val" id="live_statu_val" value="0" type="hidden" />
<audio src="" style="display:none;" id="live2d_bgm" data-bgm="0" preload="none"></audio>
<input id="duType" value="douqilai" type="hidden" />
</div>
</div>
<div id="open_live2d">召唤伊斯特瓦尔</div>
<!-- <![endif]-->
<footer>
<p>
<small>Made with ❤ by Mayx<br />Last updated at 2026-01-01 00:00:18<br /> 总字数614622 - 文章数178 - <a href="/atom.xml" >Atom</a> - <a href="/README.html" >About</a></small>
</p>
</footer>
</div>
<script src="/assets/js/scale.fix.js"></script>
<!--[if !IE]> -->
<script src="/assets/js/main_new.js"></script>
<script src="/Live2dHistoire/live2d/js/live2d.js"></script>
<script src="/Live2dHistoire/live2d/js/message.js"></script>
<!-- <![endif]-->
</body>
</html>