300 元 Mac mini 秒变家用 Nas
最近一直想组一个 NAS,正好家里有闲鱼上二手淘来本来想用来当跳板机的 Mac mini,可以直接用上。 最开始本来想的是,用虚拟机装飞牛,当时想着刷一个初始化一下,结果把系统整没了,也装不回来了,直接一不做而不休,直接刷个飞牛,也不搞虚拟机了。整个过程比想象的简单多了,我基本上就参考了这一个 blog,过程还是比较详细的。 制作引导 U 盘最好找一个 16 G 的,不过我用的都是 8 G 的,也是初中的时候剩下的,正好能用上,用的工具是 BalenaEtcher,它有 Mac 版本,把飞牛的 iso 文件刷进去就可以了。我整个操作都非常丝滑,一点报错没有。 后面的装系统也是,就按照前面那个 blog 的流程走就行。 成品如下: 目前有点问题的地方就是理论上我应该是一个千兆网口,不知道为什么是个飞牛识别出来是个百兆,不知道卡在哪里了。 其次就是家里没有 ipv6 这就意味着在外网看流畅看视频基本不太可能了,感觉再申请一个然后搞 DDNS 也挺麻烦,我在美国是有 ipv6 的,但是 DDNS...
多模态中的 Single String 与 Two String
多模态AI如何理解世界?一文读懂单序列与双序列模型 多模态人工智能的浪潮正在席卷而来,从能够理解图片和文字的 LLaVA,到能生成视频的 Sora,AI 正在以前所未有的方式将不同类型的信息联系起来。 那么,这些多模态模型究竟是如何将图像、文本等不同模态的信息融合在一起的呢? 目前,主流的架构可以归纳为两大阵营:**单序列(Single String)**和双序列(Two String)。理解这两种范式,就能抓住多模态模型的核心。 1. 单序列(Single String)方法:一次看懂,全局理解 核心思想:将所有模态的数据都转化为同一种“语言”(Token),然后将它们像串珠子一样拼接成一个长长的序列,交给一个统一的 Transformer 模型进行处理。 这就像是“一图胜千言”。模型将图像视为一长串“视觉词汇”,将它们与文本中的普通词汇放在一起,在同一个注意力空间中进行交互和理解。 工作流程: 图像编码:将一张图片分割成许多小块(Patches)。 特征投影:使用一个视觉编码器将这些 Patches 转化为一系列图像 Token,并投影到与文本 Token...
StreamMUSE
Fake Offline def fake_offline(): model = load_from_checkpoint(model_path) # Convert midi file to tensor # midi file -> [1, num_logical_ticks, max_polyphony*2] x_mel, x_acc = conter_midi_to_tensor(midi_path) # fake inference round for i in range(n_round): # get right prompts prompt_length_i = prompt_length + i*gen_interval_ticks x_mel_pre = get_proper_mel_prompt_length(prompt_length_i) x_acc_pre = get_proper_acc_prompt_length(prompt_length_i) x =...
标准卷积过程
在看 MLSys 相关的东西的时候,经常能看到准对卷积操作做的优化,但是我总是忘卷积操作具体是怎么做的,在这里记一下。 标准卷积计算过程 输入图片的维度: 一张彩色图片通常有三个维度:高度 (H) x 宽度 (W) x 输入通道数 (C_in)。对于 RGB 图片,C_in 通常是 3。 单个卷积核的维度: 一个卷积核(或称为滤波器)的完整形状是 核高 (K_H) x 核宽 (K_W) x 输入通道数 (C_in)。 例如,如果输入图片有 3 个通道(RGB),并且你使用 3×3 的卷积核,那么一个卷积核的实际形状是 3×3×3。它包含了对应每个输入通道的 3×3 切片。 卷积操作的内部过程: 当一个卷积核在输入图片的某个局部区域滑动时,它会进行以下操作: 逐通道相乘: 卷积核的每个切片会与输入图片对应通道的局部区域进行逐元素的乘法。 求和: 将所有通道上(例如 RGB...
Coding Diary(2025-7-8)
又是好久没写了,训练模型训的确实是非常头痛啊,在这里做一些版本描述,虽然理论上 yaml 里面都是有描述,但是毕竟如果你要一个一个点开看太麻烦了。 1.0.18,1.1.5,1.3.9 这几个都是为了 catch loss jump 训练的。
rsync 命令总结
rsync (remote sync) 是一个用于在本地或远程系统之间高效地同步文件和目录的工具。它的核心优势是使用“增量算法”,只传输源和目标之间有差异的部分,从而大大减少数据传输量。 1. 基本语法 rsync [选项] <源路径> <目标路径> 源路径 (Source): 您要从中复制文件的地方。 目标路径 (Destination): 您要将文件复制到的地方。 源和目标都可以是本地路径,或者是 user@host:path 格式的远程路径。 一个非常重要的细节:源目录末尾的斜杠 / rsync ... source/ destination: 表示将 source 目录里面的内容复制到 destination 目录中。 rsync ... source destination: 表示将 source 目录本身(连同文件夹一起)复制到 destination 目录中,最终路径会是 destination/source/。 通常,您想要的是第一种行为。 2. 常用选项 (Options) 这些选项可以组合使用,例如 -avh。 -a,...
Coding Diary(2025-6-26)
又是过的飞快的一周,还是有完成一些东西,而且确实学到了一些东西,把一些想起来的遇到问题记一下。 FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpt3exafey' 这个错误遇到过两次,第一次没在意,觉得可能是什么莫名其妙的故障,当时也查了一下 tmp 文件还有多少空间。 第二次再遇到的时候幡然醒悟,感觉应该是因为服务器会定期清除 tmp 文件夹里的文件,所以大家如果训练模型可能很久的话记得指定 TMPDIR 环境变量。
Coding Diary(2025-6-12)
Issue 1: pip install/module not found Basically, I am trying to set up the music transformer model. When we run pip install -r requirements.txt We encounter the error But we just ignore. Then, when we run this command python extract_mid.py We encountered this error And if you try to solve it with pip install mido, you may not solve it. This is because the pip you are using is not the pip in your virtual environment. Actually, if you use venv, you don’t have pip, instead, you have pip3. So,...
Coding Diary(2025-6-19)
这一周可以说是过的飞快,真是学到了点东西,模型的训练也开始了。 系统方面的话,SGLang 还是基本没什么进展,但是对我们现在用的这个 music transformer 的架构是大致了解了。我们 mentor 现在是让我们从算子的结构画一个模型图出来,目前还没倒出空来干。 模型方面进展挺多的,处理了我们的新的、巨大的 dataset:Aria。现在用的是最简单的分离 melody 和 accompaniment 的方法,之后可能会试一试别的,比如 skyline。在最简单的分离方法得到的数据集上,我们已经训练了两轮模型了,一个没有 interleave_pos 这个参数,另外一个有。这个参数差不多意思就是序列交错,就是一个 acc 和 一个 mel 是交错的,有这个参数就是相当于告诉了模型这个数据训练的时候是交错的。 之所以这个系统方向进展比较缓慢,就在于我们都得首先熟悉模型,要不然系统也做不了。其次就是训练的时候遇到了一些问题,调了很久训练参数。再就是有一些工具的安装,比如说这个...