一、说在前面 训练基座大模型那都是大公司们的事情,普通人、普通公司肯定是玩不起的,但是作为一个技术人,你可以不去做真正的大模型训练,但是你还是有必要知道和了解一下一个大模型是如何训练出来的。 而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技术、幻觉检测方案,并让大模型学会给答案标注“参考文献”(溯源)。 […]
jacky
一、前言 昨天晚上想给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 […]
一、目标环境 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: […]
一、前言 在过去的一段时间里,我花费了大量精力钻研three.js技术,期望能将小落同学的形象塑造为3D虚拟人,实现与用户的交互功能。为此,我对vrm/obj/fbx模型进行了反复调整,还结合mixamo的动作资源进行适配。然而,无论我如何努力,始终无法达到理想的效果。在实际展示中,模型与动作之间总是存在各种问题,比如部分动作出现模型撕裂现象,或是动作呈现出不自然的颤抖,这让我十分苦恼。经过五一假期的深思熟虑,我决定暂时搁置3D方案,转向2D领域寻求解决办法。这意味着之前为three.js所做的模型构建、动作设计、表情制作等工作可能要暂时搁置,虽然心中满是遗憾,但也只能期待未来有机会能让它们重新发挥作用。 二、选定2D解决方案 对于2D虚拟人的实现,其实有多种方案可供选择。在大型商业化直播场景中,许多虚拟人采用VTuber的解决方案。不过,该方案对硬件配置要求较高,以我目前使用的每年仅需99元的阿里云ECS服务器而言,难以满足其运行需求。综合各方面因素考虑,我最终选定了Live2D技术。它不仅技术成熟度高,而且非常适合用于基于Web的虚拟人项目开发,能够很好地满足我的需求。 三、Live2D练手 在Github平台上,有众多关于Live2D的开源项目。其中,目前仍保持活跃状态的项目之一是https://github.com/stevenjoezhang/live2d-widget。我按照该项目提供的步骤进行安装实践,发现当使用远程CDN上的配置时,系统能够正常运行。但当我尝试配置本地的autoload.js时,却始终遭遇“initWidget is not defined”的报错。尽管多次排查尝试,依然未能找到问题的根源,无奈之下只能放弃该项目。 最终,我成功运行了https://github.com/JokerPan12/live2d项目。接下来,我计划先将这个Live2D看板安装到网站上,积累经验后再应用到小落同学的项目中。 四、将Live2D看板安装到wordpress网站上 以下是详细的操作步骤: 1. 下载代码 通过执行以下命令克隆项目代码: 2. 安装SDK代码及live2D模型 从克隆的仓库中,选取live2d、asteroids、icons这三个目录,并上传至网站服务器。我的服务器目录结构如下: 3. 修改wordpress的theme 上传完SDK和模型后,需要对wordpress的主题进行修改,以启用live2d功能。进入wordpress的主题目录:wp-content/themes/{正在使用的主题名},找到其中的header.php以及footer.php文件。 修改header.php 在header.php文件的标签区域添加以下代码: 修改footer.php 在footer.php文件的标签结束前的代码区域添加如下代码: 创建自定义的autoload.js autoload.js代码如下: 修改functions.php代码 wordpress支持自定义脚本功能,我们正是利用这一机制,通过创建load_live2d_script函数来实现Live2D的加载。load_live2d_script函数的参数说明如下: 五、测试并体验一下效果 完成上述操作后,随意打开网站的一个页面并刷新,就可以看到自己的Live2D看板娘效果了。 六、下一步 后续我计划将Live2D技术集成到小落同学项目中。回顾为three.js付出的诸多努力,虽然暂时搁置,但心中仍满是感慨。
前面在我的笔记本上用FunASR和PaddleSpeech为小落同学整合了一下ASR的功能,但是发现在我的阿里云ECS上跑不动,由于是乎就想找一个最轻量级的ASR模型,让小落同学也可以用上免费白嫖的ASR功能。我的要求很简单: 翻烂Google, Baidu, Bing,搜遍github之后,当前收到的评估是:Vosk 是最紧凑、最轻量级的语音转文本引擎之一,可以支持20多种语言或方言,包括:英语、中文、葡萄牙语、波兰语、德语等,还可以支持Windows, Linux, Android、iOS和Raspberry Pi,而且Vosk 提供了小型语言模型,不占用太多空间,理想情况下,大约只有50MB。然而,一些大型模型可以占用高达1.4GB。该工具响应速度快,可以连续将语音转换为文本,还提供流媒体API(与流行的语音识别python包不同),还支持说话人识别(这个我暂时还没试过)。 既然如此,我只能说:兄弟,就是你了。以下是关于Vosdk从技术原理到实战代码。 一、Vosk相关介绍 在众多 ASR 工具中,Vosk 凭借以下核心优势脱颖而出: 二、Vosk 项目核心信息 三、快速安装指南(以 Python 为例) 1. 环境准备 要求使用Python 3以上版本环境,除非你的环境是古董级别的,不然都是Python 3以上,但是为防万一,还是建议你升级一下。虚拟环境就直接用小落同学的虚拟环境,不另外创建虚拟环境,也算是为我的ECS省点空间。 2. 安装 Vosk 库 3. 下载语音模型 支持的模型列表:https://alphacephei.com/vosk/models其中中文的我看有三个 模型名 大小 Word error rate/Speed 说明 License vosk-model-small-cn-0.22 42M 23.54 (SpeechIO-02) 38.29 (SpeechIO-06) 17.15 (THCHS) Lightweight model for […]
今天的这个测试是因为上周用Open WebUI搭了一个简易的知识库(具体看我上周发的那篇文章),然后产品感兴趣了,再来用Dify这个相对企业级、产品级的系统来正式搭一个企业知识问答系统而做的测试。由于需求是从LLM大模型、Embedding模型、Rerank模型,以有Dify平台全套都必须是私有化部署,且不能使用Docker,全部是手动代码部署,因此,整个过程较复杂,也走了一些弯路,所以整个内容篇幅较长。为省流,直接上结论。 一、省流:关键结论速览 结论 需注意的是,Open WebUI 和 Dify 目前所使用的 embedding 模型不同,这是造成测试结果存在差异的一个重要因素。 测试体验环境 二、现状与挑战:Open WebUI 知识库的局限 前期,我们基于 Open WebUI 搭建了一个简易的知识库。但由于 Open WebUI 并非专业用于知识问答的平台,其功能较为简陋,难以满足企业级产品的知识问答需求: 针对以上种种问题,经过与两位领导的初步讨论,我们启动了对 Dify 的预研工作,期望借助 Dify 的工作流机制来解决 Open WebUI 知识库存在的这些问题。 三、Dify 的解决方案:灵活性与强大功能的结合 Dify 的强大之处在于其高度的灵活性,主要体现在智能体和工作流两个方面: 四、Dify 部署之路:挑战与进展并存 在对 Dify 的优势进行充分了解后,我们来看看当前的部署进展情况。目前,Dify 的演示环境已经搭建完成,但在使用和优化方面仍有许多工作需要进一步探索。 整个部署过程并非一帆风顺。由于没有实体服务器,我们在 AutoDL 上租用了一台虚拟机进行部署。但由于 AutoDL 虚拟机存在诸多限制,导致我们遇到了不少问题: 因此,目前我们的部署是分布在几台不同的设备上: 通过一系列的配置工作,我们实现了这几台设备之间的互联互通。 五、Dify 平台的实战测试:与 Open […]
一、前言 你能想象在 demo 上用小落同学 “克隆” 出一个明星,比如鹿晗,会有多酷吗?但手动给小落同学投喂这个人的海量信息,那工作量,想想都让人望而却步。于是,给小落同学添加联网搜索功能成了我的当务之急,在此之前,对市面上可用的联网搜索 API 服务提供商进行一番调研很有必要。一番深入搜索后,我初步筛选出了以下几个实力强劲的联网搜索 API。 二、调研 1. 国内篇 博查搜索 API 这是博查 AI 精心打造的企业级互联网网页搜索接口,简直是 AI 应用、RAG 应用和 AI 智能体开发的绝佳拍档。它支持自然语言搜索,能从近百亿网页和丰富的生态内容源中,精准挖掘出高质量世界知识,新闻、图片、视频、百科等领域都不在话下。针对 AI 应用,它做了深度优化,支持关键字 + 向量混合搜索,还借助语义排序模型,大大提升了搜索结果的相关性和准确性。更赞的是,它成功解决了数据安全和内容合规等棘手问题,对于对数据隐私要求严苛的项目来说,无疑是首选。 智谱 AI Web Search Pro 智谱 AI 推出的这款专业版联网搜索 API,继承了传统搜索引擎强大的网页抓取和排序能力,同时在意图识别方面实现了重大突破,还支持流式输出搜索结果。它能与大型语言模型完美融合,极大地提升了信息检索效率,有效缓解了大型语言模型常出现的 “幻觉问题”,而且目前限时免费,这性价比,简直无敌! 天工 Sky – SaaS – SearchAPI 依托 “天工” 大语言模型卓越的推理能力,它不仅能高效进行网页抓取和排序,还能精准提取和生成关键内容,显著提升信息获取效率,让大型语言模型的 “幻觉问题” 无所遁形。它提供基础搜索、增强搜索、研究搜索等多种实用模式,价格在 0.18 元 / […]
一、前言 听说KTransformers 0.2.4支持并发了,这可是个大进步,之前测试下来KTranformers最大的期待就是AMX指令加速和支持并发。 现在可以支持并发了,是否意味着KT终于不再是一个玩具,有可能朝产品化的方向去走了,因此上手体验一下看看。 省流,直接看结论:这个版本的方案下,依然没有看到传说中的新版XEON CPU的amx指令加速带来的飞跃,并发依然不行(能并发,但体验无法忍受),个人玩玩,研究一下技术可以,但无法产品化、商业化使用。 有兴趣复现的可以照我这个步骤来走,基本不会有问题。 二、软硬件环境 1. 软硬件环境 还是原来的环境。租的AutoDL的GPU服务器做的测试 2. 虚拟环境 我图省事,就直接复用了之前的v0.2.3的虚拟环境:/root/autodl-tmp/jacky/envs/kt0.2.3 重头开始的朋友可以重新创建一个新的虚拟环境,步骤如下 三、开工 测试使用: 1. 下载KT代码 给挂个加速器https://ghfast.top/ ,避免下载代码失败。 2. 同步子模块 先改下子模块的代码仓库路径,同样给加下加速。 所有子模块地址给挂个加速 然后下载子模块代码 注: 这一步要注意,v0.2.4引入了一些新的子模块,并且这些子模块又有子模块,这样会导致下载子模块会失败,从而导致下面的:编译完有一个报错:ERROR: Directory ‘third_party/custom_flashinfer/’ is not installable 这个错误,这个现在在墙内没办法,只能跑两遍(有多少层递归就要跑多少遍),然后每一层的代码用ghfast.top加速下载成功后,再去改那一层的.gitmodules里的每个子模块的仓库地址,然后再跑。 3. 安装依赖 4. 编译KTransformers v0.2.4 1) 修改./install.sh, vi install.sh 加入: 2)编译 如果你有1T内存,可以 USE_NUMA=1(# For those who […]