一、前言 前阵子写了几篇大模型开发相关的入门的文章,然后有同学私信说自己训练或者微调出来的模型效果不如预期,对于这一点,我在前面的文章里也反复强调过多次,对于大模型来说,唯一真正有价值的只有:数据。脸书扎克伯格花大价钱ScaleAI的底层逻辑也在于此。 在现在这个时代,完全可以说,大部分的技术都是没有什么价值的,因为大部分的技术都是有手就行。真正的价值都在数据,而且最有价值的数据往往都是一个个的专业领域的数据,决定大模型微调效果的是数据,决定你整个产品成败的也是数据,这个事情一定要搞清楚。所以呢,建议大家从现在开始,给自己好好做积累吧,把你的行业数据、专业领域的数据一点点积累好,这才是你的未来。 而数据中最重要的还是实际的业务数据,并不是让大模型帮你生成的数据,但是如果你是为了做一些项目的测试的话,让大模型来帮忙丰富一下你的数据集也是一个不错的选项。这里就用我自己的一个实际的用于语音助手的案例,来手把手教你如何利用大模型来帮你生成一些数据。 【有手就行】大模型开发入门系列 二、让大模型帮忙生成训练集 之前用的更多的是利用ChatGPT来生成数据,但是为了写这篇文章,我又专门用千问、文心、豆包、ChatGPT走了一遍完整流程。这篇文章主要有用的就是生成数据的提示词,顺便用这个实例介绍对比一下几个主流模型的表现,供大家参考。 从这一轮次的的测试生成数据集的情况来看,印象分最好的要算Qwen3-Max,而ChatGPT则垫底了。看来中文还是得选中国的大模型。另外,犹记当年第一届世界人工智能大会时,马云跟马斯克吹牛:AI就是Alibaba Intelligent,这牛吹的当年所有人都想笑,再过几年看看Alibaba到底能不能笑傲江湖,让咱们座目以待。 此外,具体每个大模型生成的数据由于太大,在这里我就不列了,不过我保存到了云盘,感兴趣的可以后台私聊我:【测试集】,会自动回复下载链接,同时你也可以自行生成。 1. 千问 使用模型:Qwen3-Max 秒级响应。刺溜一下就给生成好了。而且是一步到位,不像豆包、文心那样,先生成数据,再自己写代码把数据保存到一个json文件。千问牛逼格拉斯。不过,生成的json文件在公司不能下载(在家里正常),可能跟公司网络DNS有关。 生成的文字多样性佳: 2. 百度文心一言 使用模型:文心大模型X1.1 为每个意图生成50条数据很快,但是文心一言为了将结果保存到json文件费了老大的劲,因为它是自己写代码来实现的,而它写的代码执行的报错了好多次,然后它自己一直在改它自己的代码,结果浪费了很多时间,XD 生成的文字多样性: 但是它在这个请求里自己生成的代码出问题,扣掉了我对它的印象分。 3. 豆包 使用模型:豆包上没写版本号,公有云的反正是最新的。 豆包-同文心,也是自己写代码生成json,比百度好一点,保存json的代码一次成功,没有改半天代码。生成的文字多样性也不错。槽位的准确率100%。它相比文心好的地方就是保存json的代码一次成功,没让我等半天。 生成的文字多样性: 4. ChatGPT 使用模型:普通版本(非Business版本) For quick tasks & answers 速度跟豆包差不多。思考过程在生成后不能查看,所以不清楚是跟千问一样,一步到位,还是跟豆包、文心一样,先生成数据,再写代码存文件。 生成的文字的多样性: 三、注意事项 如果你生成数据的目的是为了训练的话,建议的做法还是要用一些实际的数据,而不是找大模型来帮你生成数据,这一点很重要。但是如果你是为了学习大模型训练或者大模型微调的话,可以考虑让大模型帮你生成一些数据,但仅限于学习。毕竟,大模型生成的数据都不一定是真正你的产品、业务所需要的数据。 四、广而告之 新建了一个技术交流群,欢迎大家一起加入讨论。扫码加入AI技术交流群(微信)关注我的公众号:奥德元让我们一起学习人工智能,一起追赶这个时代。
Yearly Archives: 2025
一、前言 1. 本文目标 你有没有问过大模型“你是谁”?问了的话,拿到的答案清一色都是大模型厂商的名字。而如果你自己部署了一个模型的话,通常都希望有人在你的应用里问你是谁的时候能给出一个“你的答案”。这篇文章就是干这个事情的,20分钟让大模型的名字变成你自己的名字。 2. 大模型入门系列介绍 前阵子介绍了两个【有手就行】的大模型基础知识,今天是大模型开发【有手就行】的第三篇。 前两部在这里: 这个是入门三步曲最后一步:MS-SWIFT认知微调,把大模型的名字改成你的名字。 上手学习大模型、人工智能相关的开发并没有什么太过高深的门槛,真的很简单,真的就是【有手就行】。 二、SWIFT认知微调相关的一些废话 1. 什么是ms-swift ms-swift(全称 Scalable lightWeight Infrastructure for Fine‑Tuning)是阿里的魔搭社区(ModelScope) 推出的一个大模型全流程工程化框架,是 “大模型轻量微调与部署的基础设施”,在消费级 GPU 与国产硬件也都可用,我有在4090,PPU平头哥、Ascend昇腾上都用过。 2. 为什么要做ms-swift微调 就像之前讲的那样:自己从头开始训练一个基座大模型是不现实的,只能以学习目的来了解大模型是如何训练出来的,有哪些步骤,会有一些什么样的训练参数、每个参数的意义和影响是什么等。所以大家更多会涉及的是利用一些现有的开源大模型来做微调,用自己的个人数据、行业数据来微调训练大模型,然后让这个大模型变成你自己的私人大模型或者行业大模型。可惜我自己觉得最重要的LoRA微调的那篇文章反而看的人比较少(一如既往的不太懂,呵呵),可能是我取的标题不够“标题党”(求大佬们指教),也可能跟公众号推荐规则有关。而一旦你自己微调训练了一个大模型,那随后必做的一件事情就是把这个大模型的名字变成你自己,当有人问它:“你是谁?”的时候,它回答的应该是:它是xxx(你给它取的名字),是由yyy(你的名字)开发出来的。比如: 我是小落,是由落鹤生开发的个人智能助手。我主要的目的是通过记录落鹤生每天的日常工作、生活的点点滴滴,然后希望在数据足够的某一天,我可以成为一个数字复刻版本的落鹤生。如果您对小落同学有任何疑问或需要帮助,请随时提出,我会尽力为您解答。 三、开始 ms-swift支持 600 多个纯文本大型模型和 300 多个多模态大型模型的训练。为方便同学们复现,我以 Qwen3-4B-Instruct模型为例 ,从模型下载开始介绍整个流程。如果有问题可以直接在下面留言,或者加一下AI技术学习交流群一起讨论。 1. 模型下载 从modelscope下载需要的模型(huggingface不太稳定,当然也可以用镜像站:https://hf-mirror.com ) 2. 原始模型部署 原则上,你的服务器上有多少GPU就都给你用上先。 3. 原始模型测试 4. 微调Qwen3-4B-Instruct-2507模型 这里在我原先的OddAgent项目基础上训练一个会议语音指令助手。这里使用官方的示例对Qwen3-4B-Instruct-2507模型进行自我认知微调。 1)安装ms-swift框架 pip 源码方式 […]
一、前言 上上周的周末无事在家,然后写了一篇《【有手就行】自己花20分钟从0开始训练一个“大模型”》,结果发现这两个星期涨了几十个关注,比我前面写了几个月文章得到的关注还多,看来这种浅显易懂的、入门级的技术文章相对来说会有更多人爱看一些。既然如此,我再把早先在做OddAgent时候,微调语音助手功能的流程也简单理一下,然后放出来给大家做一个参考吧。 事实上,上手学习大模型、人工智能相关的开发并没有什么太过高深的门槛,真的很简单,真的就是【有手就行】。 二、大模型微调概述 微调(Fine-tuning)有很多种不同的方法,但是使用的场景以及代价也都是不一样的。作为一个没什么资源(数据缺缺,GPU缺缺)的普通人来说,考虑的肯定是低成本方案。 方法类型 参数更新范围 计算成本 适用场景 典型工具框架 全参数微调 全部参数 极高 大数据集、高资源场景 Hugging Face Transformers Adapter Tuning 适配器参数 低 多任务、资源受限 AdapterHub、PEFT LoRA/QLoRA 低秩矩阵参数 极低 大模型单卡微调、小样本 LoRA、QLoRA(PEFT 库集成) 指令微调 全量 / 部分参数 中 – 高 通用对话模型、多任务泛化 Alpaca-LoRA、FastChat 领域适配微调 全量 / 部分参数 中 垂直领域任务 自定义领域数据集 + Transformers 三、LoRA微调全流程 前阵子在将小落同学项目的智能体代码摘成独立的OddAgent项目时,实践的是一个会议相关的语音助手功能,该功能有针对Qwen2.5-0.5B-Instruct模型和Qwen3-4B-Instruct-2507这两个模型重点做了一些测试和验证,用的就是其中成本最低的LoRA微调。最后跑下来Qwen3-4B-Instruct-2507的效果要显著好于Qwen2.5-0.5B-Instruct(有同时针对这两个模型用同一套数据集去做了LoRA微调)。因此,本文的重点就放在了Qwen2.5-0.5B-Instruct的LoRA微调上,因为后面我还准备再继续针对这个模型再补充一些训练集来做一下微调,目标是在这个模型上也能做到100%的意图/槽位准确率。 跟之前训练大模型一样,还是在我家里的这个10年前的老笔记本上进行的。 […]
一、说在前面 训练基座大模型那都是大公司们的事情,普通人、普通公司肯定是玩不起的,但是作为一个技术人,你可以不去做真正的大模型训练,但是你还是有必要知道和了解一下一个大模型是如何训练出来的。 而GPT_teacher-3.37M-cn 是一个很好的示例项目,让你可以用一台普通的PC,用CPU来训练一个3.37M的中文GPT模型,整个训练耗时不到20分钟,回答训练集里的问题的效果也还是挺不错的。感兴趣的同学可以用这个项目来练手、实操复现一下“自己动手从0开始训练一个大模型”的完整流程。 二、项目概述 一个轻量级中文GPT模型项目,专为在CPU上快速训练和演示而设计: 模型参数量:3.37M架构:4层Transformer解码器特点:使用RMSNorm、RoPE位置编码、权重共享等优化技术目标:45分钟内在普通CPU上训练出可用的中文问答模型 参考训练时长: 三、完整复现流程 介绍完了,就让我们来实操整个从0到1的训练吧。 先下载代码: 1. 环境准备 依赖项包括: 2. 构建中文分词器 这将: 3. 配置文件确认 config.yaml包含了所有必要配置,我在这里给每个参数加了个说明,以便于理解每个参数的意义。 4. 执行训练 5. 测试模型 训练完成后,根据src/train.py中的代码,最终会在config.yaml指定的目录下(checkpoints)生成一个标准的模型,以及一个量化的模型,分别是: 然后你可以用下面的命令来测试一下训练集(位于data/train.jsonl)里的一些问题: 四、关键技术点解析 在这个示例的大模型训练里,我们基于Decoder-only的Transformer(因果语言模型),使用下三角掩码确保每次只关注历史信息,这正是GPT系列模型能够生成连贯文本的核心。 1. 训练参数说明 具体的训练参数我在上面的config.yaml里给每个参数都写了一个注释,用于说明每个参数的意义。而总结概括一下这个配置参数的话,主要如下: 2. 关键代码 五、补充说明 1. 仅3.37M参数远达不到scale law 这个项目只是一个演示项目,教你如何自己动手从0到1来训练一个大模型,但是必须要知道的是大模型有个别称是 scale law,所以走传统transfomer路线的话,注意力是非常吃参数的,这么一个参数量,其输出完全肯定不会非常好(除非你问的就是训练集里的知识)。同时在这个项目的训练集(位于data/train.jsonl)里你也可以看到,虽然有510条训练数据,但实际上里面的内容全是Ctrl C + Ctrl V出来的,真正的prompt和completion就几条。 2. 为什么问一些不在训练集里的问题时,返回乱七八糟的东西,而不是“不知道” 大模型的本质是一个词语接龙游戏,每出一个字,根据概率去预测下一个字是什么。其目标是生成流畅的文本,而不是正确的文本,它只是在模仿训练集里的文本概率,而不是真正的理解内容,所以最终的效果完全取决于你给它的训练数据。因此,当你去问不在训练集里的问题的时候,大模型就只能随便的去猜下一个字可能是什么字,而不是直接给你回答一个“不知道”,这也是大模型“幻觉”的由来。 3. 关于大模型幻觉 大模型幻觉主要有四种幻觉类型:前后矛盾,提示词误解,事实性幻觉,逻辑错误。幻觉主要有三大成因:数据质量问题,生成机制缺陷,模糊指令。幻觉通常有五种解决方案:精准提示词、示例学习、调参、RAG技术、幻觉检测方案,并让大模型学会给答案标注“参考文献”(溯源)。 […]
一、前言 昨天晚上想给oddtts项目的启动命令行里加一个OddMeta的ASCII art文字的代码输出。 一如既往,想让我自己写那是坚决不可能的,这种事情有大模型了,为什么还要自己来写呢。 但是,(省去一万字),无奈的发现国内外的各个大模型全部翻车了,包括(一定要把它们的大名列出来,恨!!!): 为了这个ASCII码字体,浪费了我一下午,加半个晚上,整个过程只能说用”无语”一词来形容,本来想算了,但是又实在有点气不过,心中默念了 @#¥%……&O()~!无数遍,最后决定还是将整个过程跟大家分享一下。 二、悲伤历程 1. TRAE AI 平时用的比较多的TRAE AI,我就信心满满的打开平时用的TRAE,Come on baby, let’s go. 1)Round 1:信心满满 我让它生成OddMeta,它这给了个啥玩意??? 2)Round 2:要让再次修改 3)Round 3/4/5/6/7/8 对于上面的结果,我很不满意,然后又用各种方式让它重新修改,但是没有一个结果是正确的。咒骂了TRAE无数次之后,我想TMD你不行,幸亏除了你之外,哥还有通义灵码。 2. 通义灵码 1) 给通义灵码一个示例让它改 2) 这个结果看上去比TRAE稍好一点,文字有点像了,但还是不对。 不对,然后我又尝试了包括但不仅限于下面这些输入。 结果还是不对! 还是不对!! 还是不对!!! 还是不对!!!! 3) 评价:咒骂x2,放弃通义灵码 口中念念有词:~!@#¥%…………&()¥ 3. 豆包: https://www.doubao.com/chat 豆包也是个不错的大模型,还是让它来试试吧。 1)重走TRAE的流程 2)重走通义灵码的流程 4. Deepseek 5. 文心一言 6. ChatGPT […]
一、缘起 想给小落同学加一些功能,但是小落同学买的是99元/年的阿里云ECS,配置很烂,基本上只能跑跑网页应用(还动不动内存不足,CPU超标)。 而我家里的电脑虽然是十年前的老电脑,至少有16G内存,比这个ECS强多了,因此想在这台电脑上部署一些服务,然后让这些服务通过ECS穿透到家里这台私网下的电脑,一方面让这台电脑可以继续发光发热,另一方面也可以再给小落同学加点功能特性。 二、缘倾FRP 晚上一个人在家没事,就去找了一下私网穿透的解决方案,Google出来一大堆,经筛选拟选用FRP来实现此需求。 FRP 是一个专注于内网穿透的高性能反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,可以将内网服务通过具有公网 IP 节点的中转暴露到公网。 FRP 项目地址:https://github.com/fatedier/frp 三、一些准备工作 小落同学所在的ECS安装的是Linux操作系统,而家里的电脑安装的则是Windows操作系统,因此需要将FRP服务端安装在Linux上,而FRP客户端则安装在Windows上。 1.配置ECS安全组 登录阿里云控制台,找到你的云服务器 ECS,并在该ECS的安全组里添加你需要放开的端口,暂定需要的端口区间为9000~9020。 2.配置ECS上的防火墙 需有公网 IP(阿里云ECS具备),开放所需端口。拟使用: 如果你用ufw 如果你用firewalld 3.下载FRP 程序 从 GitHub Releases 下载对应版本: SSH登陆上阿里云ECS,开始下载、安装、配置。 你可以直接在浏览器上下载,浏览器上输入下面这个地址即可。也可以命令行里用wget来下载。 注:如果你的windows没安装wget的话,可以到这里下载 https://eternallybored.org/misc/wget/ 将下载的 Windows 版本压缩包解压到任意目录(如e:\tools\utility\frp),目录中包含frpc.exe(客户端程序)和frpc.ini(配置文件)。 四、【成功】测试http配置 1.配置http 1)服务端配置 修改frps.toml如下: 2)客户端配置 修改frpc.toml如下: 2. 测试http模式 1)启动服务端 2)验证服务端控制台 访问 http://47.116.14.194:9020 输入面板用户名密码,能看到界面即启动成功。 3)启动客户端 […]
一、前言 前阵子有一位同学来问我,小落同学的TTS功能是怎么实现的?我跟他解释了半天,发现双方对一些基础技术、知识、名词都无法对齐,沟通起来实在有些累。后来实在没办法,就跟他说,我把小落同学的TTS功能的代码开源出来,然后你自己直接看代码吧,过了半个钟头,他回来跟我说:非常感谢,对着代码看,一目了然。 呵呵,果然程序员之间的沟通最简单、有效的方式还是:Talk is cheap, show me the code OddTTS的代码绝大部分都是Catherine同学在高考结束后暑假期间写的,而明天她即将开始大学生涯的第一节课,今天特补上这个文章纪念一下高中生涯的结束,并迎接大学学习的正式开始。 二、什么是OddTTS? OddTTS是一个简单的多引擎语音合成服务,整合了当前主流的TTS引擎(如EdgeTTS、GPT-Sovits、Bert-VITS2等),并提供统一的API接口和友好的Web界面。无论你是开发者需要集成语音合成功能,还是普通用户想快速生成语音,OddTTS都能胜任。 项目地址:https://github.com/oddmeta/oddtts 普通用户可以直接访问 http://localhost:9001 即可打开可视化界面开发者可通过http://localhost:9001/api/oddtts/ 接口进行开发集成 三、为什么选择OddTTS? 1. 多引擎支持,语音风格多样 OddTTS集成了多种主流TTS引擎,包括: 你可以根据需求自由切换引擎,轻松获得不同风格的语音输出。 注意:OddGptSovits这个引擎不是开箱即用的,需要用户自己部署GPT Sovits,然后再照着EdgeTTS的API封装一下才能接入到OddTTS 2. 灵活的调用方式 无论你需要哪种输出形式,OddTTS都能满足: 3. 开箱即用的Web界面 启动服务后,通过浏览器访问即可打开基于Gradio的可视化界面,支持: 4. 完善的API服务 开发者可以通过RESTful API轻松集成到自己的系统中,主要接口包括: 5. 高度可配置 通过简单修改配置文件,即可实现: 四、快速上手教程 环境要求 安装步骤 1. 克隆项目代码 2. 灵活的调用方式 无论你需要哪种输出形式,OddTTS 都能满足: 3. 开箱即用的 Web 界面 […]
一、目标环境 Ubuntu 24.04,拟安装社区版gitlab。无废话流程。 二、安装步骤 1. 前置步骤 启用ssh 防火墙放行 安装curl 添加仓库包 2. 安装gitlab-ce 3. 部署安装完成后 1)重置root密码 [root@test bin]# gitlab-rails consoleirb(main):001:0> user = User.where(id:1).firstirb(main):002:0> user.password = ‘修改的密码(必须超过八位)’irb(main):004:0> user.saveirb(main):005:0> exit 2)编辑配置文件,设置为你的urlvim /etc/gitlab/gitlab.rb external_url ‘http://172.16.237.141’ 三、可能会碰到的问题 报错:there was a problem with public attribute 问题日志 问题分析 这个错误表明系统中仍然残留着 GitLab EE(企业版)的配置信息,导致在配置 GitLab CE(社区版)时出现冲突。可以按照以下步骤彻底清理残留配置并重新安装 彻底彻底卸载残留的 GitLab 组件: 清理系统缓存并重新安装 […]
由于我在做的小落同学(https://x.oddmeta.net)项目需要用到ASR功能,之前针对 FunASR、FireRedAsr、Vosk等ASR项目也做了一些评测,但是总体跑下来发现还是FunASR的整体表现最好,所以我就将FunASR给封装了一下,做了一个OddAsr的项目。 而考虑到ASR功能的用途广泛,之前也有一些朋友私下问过我相关的一些使用和封装的问题,尤其是流式ASR的支持(github上有好多FunASR的API封装,但是全是离线文件转写的,没有一个同时支持离线文件转写和流式转写的API封装项目),想了一下干脆直接把它开源出来吧。希望对有ASR需求的同学有帮助。 项目地址: https://github.com/oddmeta/oddasr 之前关于ASR相关的一些测试 ASR引擎测试:FireRedASR只能说小红书的诚意不够,https://www.oddmeta.net/archives/144ASR引擎测试:FunASR,必须给阿里点一个赞,https://www.oddmeta.net/archives/165可能是最紧凑、最轻量级的ASR模型:Vosk实战解析,https://www.oddmeta.net/archives/201 项目简介 OddASR是一个简单的ASR API服务器,基于强大的开源语音识别库FunASR构建。FunASR由ModelScope开发,提供了丰富的预训练模型和工具,可用于各种语音识别任务。OddASR的目标是简化FunASR的部署,满足非实时音频处理的需求,同时也为实时流式转写提供了支持。 项目具有以下特点: 安装步骤 1. 克隆仓库 2. 安装依赖 使用方法 1. 启动REST API服务器 服务器将在http://127.0.0.1:12340上启动。 2. 测试文件ASR API 使用testAPI.py脚本测试API: 也可以使用curl命令发送音频文件到REST API: 3. 测试流ASR API 使用testStreamAPI.py脚本测试API: 4. 示例输出 5. Docker部署 项目待办事项 参考资料 如果你对语音识别技术感兴趣,不妨试试OddASR。它简单易用,功能强大,能为你的语音转文字工作带来极大的便利。快来体验吧!
一、前言 这段时间,在非工作时间我一直在致力于做一个在低配置的硬件上可实际运行的个人智能助理:小落同学。然而前两天谷歌的2025 Google I/O大会发布的Gemma 3n真的让我震撼了。 二、关于Gemma 3n 2025年5月21日,在一年一度的谷歌I/O大会上,谷歌推出了Gemma 3n – Gemma 3系列开放式人工智能模型的新成员。谷歌表示,该模型旨在在智能手机、笔记本电脑和平板电脑等日常设备上高效运行。Gemma 3n与下一代Gemini Nano共享其架构,Gemini Nano是一种轻量级的AI模型,已经为Android设备上的几个设备上的AI功能提供了支持,例如Pixel智能手机上的录音机摘要。 详细信息 谷歌表示,Gemma 3n使用了一种名为Per-Layer Embeddings(PLE)的新技术,可以让模型比类似大小的其他一些技术的模型消耗更少的RAM。尽管Gemma 3n有50亿和80亿个参数(5B和8B),但PLE技术让它的内存占用仅相当于2B或4B模型。这意味着Gemma 3n可以在2GB到3GB的RAM下运行,使其适用于更广泛的设备。 图片来自Google Blog:https://developers.googleblog.com/en/introducing-gemma-3n/ 图片来自Google Blog:https://developers.googleblog.com/en/introducing-gemma-3n/ 关键功能 可用性 作为Gemma开放模型系列的一部分,Gemma 3n提供了可访问的权重,并获得了商业使用许可,允许开发人员在各种应用程序中对其进行调优、调整和部署。Gemma 3n现在可以在Google AI Studio中预览。 三、如何获取Gemma 3n? Gemma 3n预览版可在谷歌人工智能工作室(Google AI Studio)、谷歌GenAI SDK和MediaPipe(Huggingface和Kaggle)中使用。 下面是在Google AI Studio中使用Gemma 3n的具体步骤: Step 1: 登录 Google AI studioStep 2: […]