[迭代] 我用 Vue 框架搭建 Gemini-nano-banana

接上篇文字换成 Vue 框架来做前端搭建。Gradio 有个缺陷,没法灵活调整左侧任务栏卡片,因为涉及到删除管理操作,点击加载历史内容。框架存在局限,而Vue 能够很好的解决这个问题。

顺便一提,还是Cursor+Claude 好用,是真正再理解你的意思去解决问题,Qoder有点兜圈子,回头还是原地杵。

以下是效果图,比我预期完成的更好。这次的效果比 Gradio 完成度更高,之前存在卡片未对齐,文本摆放不美观的问题。

我实现了以下功能:

  • 添加了Nano banana edit 编辑模型API (触发条件就是只要用户上传图像)
  • 左侧列表排序逻辑最新的越靠前,可以删除任意卡片
  • 生成的效果图可以点击下载,显示图像分辨率字样
  • Canvas 原生局部重绘组件
  • 支持双图混合输入

知识点-使用图床将图像传入编辑模型

因为都在本地调试,除了接入好 Nano banana edit 编辑模型外,要接入图床,这样能够实现图像传输到编辑模型。图像的传输格式选择是 Base 64,同时接入Kie.ai 提供的免费图床 API 。对此,一个图像编辑需求功能才算正常跑通。

Cursor+claude 图片局部重绘遇到无法编辑图像

诊断为Canvas污染机制,当Canvas中绘制了跨域图片时,浏览器会将整个Canvas标记为”tainted”

我们的流程:AI图片 → 加载到Canvas → 用户涂抹 → 导出Base64 → 上传到图床

失败点:在导出Base64这一步失败了

Cursor+claude 是如何解决的

预防措施(图片加载阶段)

  1. 预处理图片:在加载到Fabric.js之前,先将图片转换为干净的Base64数据
  2. 避免污染源:不使用crossOrigin,通过Canvas重绘创建同源数据
  3. 完全控制:所有图片都经过我们的干净Canvas处理

兜底措施(导出阶段)

  1. 直接导出:先尝试正常的toDataURL()
  2. 重绘导出:如果失败,使用Canvas重绘技术
  3. 服务器端:如果还失败,发送数据到服务器合成(预留)

技术流程 

原始图片URL → createCleanImageBase64() → 干净的Base64 → Fabric.js

以上图片的局部重绘得以解决。

Fabric.js 会出现已知的画笔漂移

去掉Fabric.js,改用vue原生的 Canvas 局部重绘。

后续考虑后续增加 Seedream 的模型API、腾讯混元3.0 模型的API接入,这个后续再研究,相信是个更有意思的事情……

利用Gradio框架搭建Gemini-nano-banana

该工具流程主要是面向需求量集中,使用人群面向团队内部,小组群体。方便管理者统一核算成本。下面分享我使用的开发工具是阿里最近推出 Qoder(使用的是 Qwen 大模型),接入 Gemini-nano-banana的api ,并通过 Gradio 框架搭建一个简单的 web 界面。

1、通过Qoder编写一个简单的web文生图界面

新用户 1000 个积分,我的使用感受下来是能够满足基本的功能搭建,我是没有任何代码阅读能力的,所以全程都是从一个视觉设计师的角度来请求命令,产生的 bug 较多。当通过一条命令要求生成小猫图片后,1000 个积分已经消耗完毕。完成的界面效果图如下:

这个界面左侧是任务列表,右侧是对话列表(上半部分是当前任务的生成记录,下半部分是输入框),可以上传图片、局部重绘,以及底部的提示词范本。这还是基本效果,细节布局还待优化,耗时1天搭建。

2、我是如何接入 Gemini-nano-banana 的 API ?

一开始我尝试使用 Google AI studio 获取 api,提供 api 的示例样本给到 Qoder,测试下来能够调用成功,但是会出现 404,通过排查发现是要升级到计费账户,也就是需要国外注册地的 Google 账号,同时你要使用到境外的信用卡才能订阅。

这一步就走不通。选择用了第三方的API接口,我使用的是 https://kie.ai/zh-CN ,一个中国人做的,包含了很多大模型的接口(Chatgpt、VEO3、midjourney、Runway、flux kontext……)最便捷的还是付款方式非常方便,支持支付宝…..

这是 Nano banana api 接口信息:https://kie.ai/nano-banana?model=google%2Fnano-banana-edit

它包含三个类型:生图模型、编辑模型、高质量模型,也就是说完成从生图需求到编辑图像需求,再到高质量图像的需求你需要接入这三个API的配置信息。

还有一个注意的地方,我使用的调用方式是 Query Task(Get),使用 Create Task(post)会遇到 404 问题。总的来说接入还算比较顺滑。

3、国产编程模型使用感受

使用过 Trae、Curse-Claude对比 Qoder 我觉得是体验感受是这样的,Curse-Claude > Qoder > Trae。我的命令请求都不是站在程序员角度发出的,这对大模型的中文的理解能力也有一定的挑战,我认为使用 Curse claude调试 bug 是最省心的,我用它来开发 iOS 应用程序,Trae 每次修 bug 都会说修正好了(实际上并没有),平均时间要花费3天。同样的问题,同样的提问请求下 Curse-Claude 能在1天就修完所有Bug。

Qoder 使用下来对文本理解能力很强,能够主动通过测试监控结果找到 bug,这点做的很赞。但是在每次调试 bug 过程中,总会请求不同的端口测试,上下文关联较弱。即使说清楚指定一个端口测试依然会在后续多轮测试中忘记,有待加强。附上我对它狂哄的交流记录:

就到这里,还有很多功能和 bug 需要修复。

我觉得正因为有了 Nano-banana、即梦 这类模型精准的修改能力,出错也越来越少。非常适合在游戏美术团队中使用,特别是前期的新项目筹备需要大量试错,尝试不同的风格。基于这个场景下通过 N8N.io 这类自动化工具接入 Nano-banana-API,并给场景原画、角色立绘、道具设计、图标设计等等进行一些批量生成的定制化工作流。甚至编写不同的需求信息,一并交给Agent 进行排序生成管理,设定命令触发时间,通过视觉大模型检阅生成效果,不满足要求继续触发生成,而设计师只需要在第二天打开云盘审核筛选,优化生成命令,这将会是一个游戏视觉设计师与AI新的协作方式。

Gemini 2.5 Flash Image (Nano Banana) 指向性修改游戏道具图标不再是梦

照现在这个大模型的迭代速度,实现口交创作不再是梦想。笔者打算把 Qwen-image 的模型进行一轮改图对比测试,结果还躺在草稿箱。

这不,谷歌的Gemini-image一出,改图能力太强大了。身边同事都不免说出牛逼的惊叹。这妥妥的就是懒人设计师的福音,改图口交的神器。哪怕游戏策划再多修改要求,那也是分分钟都能出很多方案啊!实在是等不及想分享给游戏行业的设计师、开发者们。

另外为了体现出Gemini 2.5 Flash Image的生图能力,我单独开了一个专栏进行记录分享:https://trilightlab.com/about-_aigc/

废话不多说,开测。依然是左边是原图,右图是修改后的。

要求:将这个图的王冠修改一个兔头,保持画面风格的一致

修改要求一定要明确,具体。不要出现过多的形容词,例如:参考、大一点、小一点、类似这种抽象类词汇。

要求:将这个图左边的绿叶植物换成水仙,花朵换成水仙花,要求画风一致,将瓶子的颜色修改成绿色主色调。

要求:参考这个构图,重新绘制一个以哈利波特元素相关的药水瓶,要求构图类似,同时融入哈利波特的一些经典元素,植物花朵元素换成食人花,瓶子的主色调为紫色和棕色,有冷暖的对比。

到这一会发现它的修改能力下降了,有可能是因为提示词还有待提高,但同时我认为还存在缺陷。让它参考构图重新创作美感,构图表达是局限。即使你的修改要求巨长,描述的非常具体模型对审美上理解是存在缺陷的。这是天然的一个缺陷。

要求:将图中蓝色的小女孩换成一个老人

上难度,给它潦草的草稿,将图进行上色。该工作流支持2张图,多张图融合输入。

要求:参考图1的画风,给图2进行上色,做成彩色,画面风格一致

总体对于我来说很不错,指哪打哪,很舒服!

线稿上色

要求:参考图1的参考构图,将图2的脸迁移到图1,同时给同1的草稿上色

以上,我认为这将是又一次新的工作流革新。原画师、UI设计师能够在基于现有的设计稿,将工作流嵌入自己的项目中,提供多种设计方案不再需要数小时的修改,更不需要和上游策划掰扯如何修改更合理。多种方案对比之后必然是找到更合适的解决方案。

更重要的是能够让广大的设计师从繁琐的工作中解放出来,聚焦很重要的工作内容上。但同时我们的文字表达又是有局限的,设计师在屏幕上画两笔抽象的形状,文字如何表达出来?这种前后关系文字表达注定是缺点,希望对你有启发。

工作流地址:https://blog.comfy.org/p/nano-banana-via-comfyui-api-nodes

QWEN-Image 可能是目前开源最强大的中文生图模型

在我的工作中,缺个能够完全支持中文的同时具备文生图能力的高品质模型。在了解到Qwen模型能够通过中文达到指向性的修改的能力,所以在这做一波测试效果对比。我对比的是字节的即梦模型,它在游戏行业中logo、海报、美术字、场景、人像角色泛化能力算是比较强的。接下来会划分几个维度看看他们的能力处在一个什么样的边界。

注:以下效果图左边是即梦,右边是Qwen本次测试的Qwen模型为20g大小的精简即梦为3.0

游戏道具图标测试效果:

厚涂中国风,游戏图标,仙侠法宝,玄幻色彩,九宫格显示9个造型各异的宝箱道具图标,设计精良,细节丰富,充满金属光泽,高档,闪亮,发光,色彩鲜艳明亮,多种材质,镶嵌宝石,金色花纹装饰,散发着神秘的光芒,纯色背景,正面斜45度视角,色彩简洁明快,奇幻插画风格,大师作品

宝箱设计风格的一致性不错,角度也一致,唯独两者在细节花纹上都需要二次修正。

icon图标设计,一共九个,图标顺序依次是:汉堡,薯条,炸鸡,可乐,鸡肉卷,奶茶,面条,米饭,包子,3D,立体感,颜色统一,白色背景,光影质感

这组图标,两者总体风格是一致的,但是在细节效果上即梦完善的更好,造型美观度要比Qwen好,体现在鸡腿的造型和细节,可口可乐的易拉罐会更有辨识度。

主题为会员等级徽章,9个不同等级六角形花状勋章图标,勋章中心有一块宝石。等级越高宝石越复杂 ,有外型上有翅膀。等级越高翅膀越多越粗 ,D游戏美术风格,生成勋章,颜色丰富鲜艳,有光感有质感,,线条简洁,

勋章图标即梦的高光处理会更更好一点点,而在造型复杂度上体现出梯度规则Qwen会完善的更好一些。总体美观度个人认为即梦的会更好。但论文本提示词的准确度中间有一块宝石Qwen更符合要求。

海报测试效果:

艺术家Kim Jung Gi设计风格,高饱和色系,极繁主义,神秘感,细节完美,极致光影,杰作。 钢笔插画风格,鸟瞰,一个小镇,所有房屋都是由可口可乐易拉罐改装成的,每个罐子房屋都是两层,有门有床有阳台,屋子里家居生活用品一应俱全。马路,车,拥挤,人群,生活气息,周边都是热带树林 高品质细节,超高清分辨率,最佳品质,笔触清晰,高饱和度,光影对比,电影质感。32k超高清细致修复

可以看出Qwen缺少对艺术家风格的理解,上色方式不同。旁边的造型建筑没有体现出来,总体风格效果效果不如即梦的好。但论结构造型也有它独特的地方。

一个被切开的青色苹果内部有一个制作工厂,工厂里的工人正在制作青色的苹果果冻糖,果冻糖躺在向外输送的传送带上。橙色背景上有忙碌的工作场景,旁边有小人物。微缩摄影、微缩模型、立体模型风格、柔和的马卡龙配色方案、3D渲染。整张照片具有很强的透视感,细节和纹理很多,营造出整体温暖的氛围。高分辨率、高质量和高细节。比例 2:3。

没啥好说的,构图和细节都基本一致。

一个有山有水的成都城市手绘图,插画,层次分明,国潮,只此天蓝色的色调,五彩斑斓,景色尽在眼底,壮阔雄伟,令人震撼,成都地标建筑(电视塔,九眼桥,IFS金融中心,武侯祠,宽窄巷子,环球中心),熊猫、竹子云雾环绕,仙气缥缈,色彩丰富,结构复杂,细节丰富,高清晰度,8K,主视觉背景。“成都”字体在左上角

这里的构图即梦会更有美感,动态趋势线比较明确,河流从左边环绕到右边,旁边建筑结构排列有序,不凌乱,建筑版面重心靠右,左边文字让画面平衡。而Qwen在构图上节奏有点乱,建筑的排列不好看,版面总体平淡。

美术字测试效果:

厚涂水墨风格字体“仙逆”,中国书法字体变形设计,字形笔画粗壮饱满如墨龙翻卷,呈青铜绿色调,融合金属质感与火焰质感,边缘有红橙色火焰光晕,仿佛从古代神兵中铸出,主字体带雕刻般高光与阴影,笔触如刀锋刻画,背景纯黑,右上角有英文“RenegadeImmortal”,搭配古印“阿K”字印章,整体构图对称厚重、层次感强,用途CG游戏海报设计,类型海报图,画风融合山海经风格、中国古代神话题材与现代数字绘画工艺,CG游戏海报风,虚幻引擎渲染感,特写,东方玄幻氛围,立体、神秘

毛笔字笔触和意境 即梦会处理的更好,而Qwen在细节度上会差点,主要体现在笔触质感上。存在部分效果没有依照提示词的效果来。

射击游戏特效标题字设计,以银灰色金属质感字体呈现主标题’枪战王者’和副标题’赢极品枪械福利不间断’,文字边缘有深色描边和立体效果,画面融入子弹、油渍、火星等元素并与文字巧妙融合,战争游戏背景,矢量插画风格,标志设计,特写,硬朗科技氛围,精致和谐统一,细节丰富

这里文字内容都符合要求,细节度上即梦同样会完善的更好一些,例如子弹的刻画上金属质感较好,而Qwen在子弹元素处理上会更Q版。文字的质感也存在同样问题。

正面居中呈现超现实风格的3D立体文字’英雄归来’与副标’HEROES COME BACK’,巨大的站立字,运用对称式构图。文字由抛光的金色和银色合金板材交错层叠,塑造出双层的厚重感。鲜艳的深红色能量流沿着字母的转折处,每一笔画内部巧妙镶嵌着立体的矢量齿轮图案和散发微光的光纤凹槽。字母的连接部位被锋利如剑的折线光刃穿透,镜面质感的金属表面映射出蓝紫色的粒子状光斑。以深邃的黑为背景,极大地增强了画面的立体景深效果。文字的边缘仿佛是金属液体瞬间凝固的模样,带有熔融后的独特质感。整体字面结构被硬核的几何光影切割得棱角分明,文字表面布满了如同纳米机械雕刻出的细微纹路,用于极具创意的超现实文字设计,超现实,正面居中,对称构图,科幻感,精细刻画

字体设计“黑暗时刻”,哥特体风高垂直比,笔画尖锐,修饰性强,复古庄严,用于奇幻 哥特气质字体,纯黑背景#000,轮廓衬线,楔形,红色高光,笔画延伸,艺术感。

对称式排列的古文明科幻风格3D立体文字「文明密码」与副标「CIVILIZATION CODE」,远古遗迹般的巨型文字。文字由刻满象形文字的玄武岩构成,形成神秘的时空交错感。笔画内部隐藏着旋转的密码盘与星象图。以深褐色为背景,突出考古氛围。文字充满文明探索的神秘感。

场景图测试效果:

正面视角,这张图片描绘了一个摆满了物品的书桌或工作台,背景是一面深蓝色的墙壁。整个场景的光线偏暗,但有两处光源营造出温馨而专注的氛围:一盏从右侧照向桌面的台灯,以及一盏从上方照向墙壁上画框的射灯。 画面的核心是一个巨大的金色奖杯,它被台灯的光芒照亮,显得光彩夺目。奖杯的底座上写着“CHAMPION”字样,它旁边有一个日历,上面显示着“TASK”。 桌面上散落着各种物品,似乎都与篮球或体育相关。我们可以看到一份展开的报纸、一本写有东西的笔记本和一支笔,以及一个放着平板电脑的支架,平板屏幕上似乎显示着一个九宫格或表格。在桌面的左侧,有几本书,其中一本的书脊上有一个“23”的号码。桌面上还有一些零散的纸张和照片。 在背景的墙壁上,挂着几个画框。最显眼的是一个大的横幅画框,里面是一张篮球比赛的图片,可能是某位球员在空中投篮的瞬间。这幅画被单独的射灯照亮。左侧还有几个更小的画框,里面是黑白照片,似乎也是与篮球运动员相关的。在桌子的最右侧,有一个印有NBA标志的杯子。 总的来说,这张图片营造了一个充满个人风格和成就感的书房或工作空间,暗示着主人的兴趣是篮球,并且他可能是一位取得了某种成就的冠军。

森林的草地上有两个可可脂,几个巨大的可可脂,切开里面是一个微观巧克力生产工厂,工人在生产线上忙忙碌碌,生产出来的德芙巧克力从生产线输送到小卖部售卖,生产线连接几个巧克力工厂,超现实主义,3D动漫卡通风格,色彩鲜艳,细节丰富,超细节刻画,超高画质

这是电子游戏的封面艺术,地下城骰子。这张图片是对地牢场景的生动、卡通般的描绘。以下是内容的细分:* 中心焦点:一组四名chibi风格的冒险家是中心焦点。有一个挥舞着火焰剑的骑士,一个是巫术类型的角色,还有另外两个,可能是流氓或战士,穿着深色的衣服。他们似乎在面对各种怪物。* 怪物:一个看起来像岩石的大型生物在中间占据了主导地位,似乎是老板或主要敌人。前景中还有一个像蜘蛛一样的大型生物,背景中还有更小、定义较少的怪物(包括看起来像骷髅的东西)。左上角可以看到一个女巫般的身影。* 游戏标题:标题“DUNGEON DICE”以风格化的字母突出显示在顶部。“地下城”中的“O”包含一个头骨。* 调色板:配色方案主要是蓝绿色/水绿色和棕色,还有火和其他细节的橙色和黄色。这创造了一种明亮又不太暗的幻想感觉。* 风格:艺术风格让人联想到漫画书或漫画小说,轮廓清晰,人物设计略显夸张。简而言之,这张图片是一件动态而引人注目的艺术品,非常适合宣传一款名为“地下城骰子”的游戏,暗示了人们可能期待的地下城爬行和掷骰子的游戏玩法。

角色人像测试效果:

机甲版孙尚香头部特写,荧光蓝短发渐变玫红,虹膜植入全息瞄准镜;金属护额延伸至太阳穴,耳麦闪烁数据流光;面部覆盖半透明能量面罩,反射弹道轨迹;背景星空粒子特效。赛博朋克风格,霓虹光污染,高饱和度色彩,故障艺术边框——ar 16:9

复古肖像,摄影风格,柔焦,纯净的脸,鹿,女孩,鹿角,藤蔓带叶子,金发,欧美高级脸,雀斑,细节光影,风,(强阳光),两个辫子,森林,前光源,,(星河),飘逸的裙子,巨大的花朵

拟人化的毛茸茸猫咪,正在玩真人CS游戏,户外丛林真人CS游戏场景,3d渲染风格,近景镜头,紧张、刺激氛围,质感、写实修饰

总结:

总体下来即梦的美感、细节处理上会更好,这个钱收的硬气。

本次对比测试不严谨,因为用的Qwen模型为20g,这种精简版的数据体量相比40g少了一半,自然对画面细节,文本的理解能力会降低。但Qwen依然是开源的中文模型文生图能力最强的。

待有时间尝试全量版的模型做个对比,相信会更有意思。

Qwen-image延伸阅读:https://docs.comfy.org/tutorials/image/qwen/qwen-image

二次元fluxlora模型分享-建议搭配union-controlnet-v2使用最佳

这个模型基于flux-dev版模型训练的lora,具备很好的泛化能力。二次元风格,这个模型可以结合线稿、参考姿势结合union-controlnet-v2模型一起使用,能够很好的控制造型姿势。

controlnet-v2工作流

图1是参考图,图3是结合姿势生成的效果。

下面两张图是完全通过参考姿势,完全由模型生成的效果,最终在ps中进行合成构图。

训练参数

最大训练24轮,打标采用触发词和tag组合,素材分为场景图和单人角色效果,拆分训练

下图为文生图效果:

以下是lora通过controlnet-v2 一起使用的流程效果,包括最终修复的效果。

通过网盘分享的文件:

模型触发词:yifanjie_girl,后续接自然文本描述 lora模型权重建议在0.7-0.9之间

链接: https://pan.baidu.com/s/1PQi21XKcrFCvjroZoJXSTQ?pwd=3f54 提取码: 3f54

配套的union-controlnet-v2工作流:https://huggingface.co/Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro-2.0

我是如何正确本地部署 Spark-TTS

Spark-TTS太强大了,你能看到的短视频、第一视角的剧情解说基本上都是出自这个开源项目。正好我打算用它来生产音频内容。看到github上那么多人反馈报错问题,确实头大。我在按照上边要求部署的时候也同样遇到问题,折腾了差不多6个多小时总算解决。我不想详细列步骤了,我的操作步骤都和以下作者一模一样。

Windows 安装步骤:https://github.com/SparkAudio/Spark-TTS/issues/5

报错1:执行pip install -r requirements.txt依赖库安装出现兼容性报错

解决办法是:pip install scipy 安装这个库,再继续执行 pip install -r requirements.txt 即可解决

报错2:TypeError: argument of type ‘bool’ is not iterable

看起来是conda出了问题。我因为安装的是miniconda,后来重新下载了安装版重新配置环境得以解决。

报错3:Traceback (most recent call last):
File “D:\SparkTTS\webui.py”, line 266, in
demo.launch(
File “C:\Users\MLoong.conda\envs\sparktts\Lib\site-packages\gradio\blocks.py”, line 2674, in launch
raise ValueError(
ValueError: When localhost is not accessible, a shareable link must be created. Please set share=True or check your proxy settings to allow access to localhost.

项目拉不起来,直到继续翻 issues 看到有人回复安装:pip install pydantic==2.10.6 安装完后继续python webui.py 拉起命令,项目正常启动。

如何从头开始构建 LLM 大模型?

这篇文章面向对神经网络LLM大模型构建感兴趣的人,写这篇文章一方面是作为自己想从头开始了解LLM构建原理,从中有所收获。作为一个应用层面的设计师(我自己),实际上并不需要懂那么多的底层原理,但正如作者介绍的那样,如果你是个赛车手,你完全不需要去建造一辆方程式赛事,因为它太昂贵,付出的时间巨大。

或许我们可以做一辆更加简单,快速上路,不断调试的卡丁车,在这个过程中不断调教,享受这个过程。比如赛车手迈克尔·舒马赫和埃尔顿·塞纳,从而掌握车子性能的敏锐度。或许也比其他设计师更有优势。

作者 Sebastian Raschka 塞巴斯蒂安·拉斯卡 是一名法学硕士 (LLM) 研究工程师,也是《从零开始构建大型语言模型》的作者。作者对推理模型和LLM领域有深入的研究和丰富的经验。他通过自己的努力和研究,为读者提供了有价值的内容,帮助读者更好地理解和掌握LLM技术。

作者将这本书提炼浓缩出7个视频,详细介绍了从头开始构建LLM的各个步骤,包括代码环境的搭建、文本数据的处理、注意力机制的编码、模型架构的实现、预训练、微调等。通过实际的代码示例和详细的讲解,可以深入理解LLM的工作原理,并掌握构建自己的大语言模型的方法。

1.设置代码环境(0:21:01):介绍了如何使用uv设置Python环境。特别提到了使用“uv pip”,并在文档中进行了解释。同时,也提到了原生“uv add”语法。需要注意的是,安装过程可能会在某些版本的Windows上出现问题,如果遇到问题,可以跳过TensorFlow的安装,并使用作者在Hugging Face模型中心共享的转换后的GPT – 2模型权重。

2.处理文本数据(1:28:01):该视频介绍了LLM训练中文本数据的准备步骤,包括分词、字节对编码、数据加载器等。

3.编码注意力机制(2:15:40):详细解释了如何从头开始编码注意力机制,包括自注意力、因果注意力和多头注意力。可以将其类比为构建汽车的发动机。

4.设置代码环境(0:21:01):再次介绍了如何从头开始编码LLM架构。

5.在无标记数据上进行预训练(2:36:44):解释了如何从头开始预训练LLM。

6.用于分类的微调(2:15:29):以垃圾邮件分类为例,介绍了如何将LLM微调为分类器,为下一个视频中的指令微调做铺垫。

7.指令微调(1:46:04):最后介绍了如何对LLM进行指令微调。

作者也提到在学习这个视频中最好搭配书本一起学习,有开发者将其翻译成中文,并通过GitHub进行开源共享,链接为:https://github.com/skindhu/Build-A-Large-Language-Model-CN。该项目提供了原版的英文电子书和翻译后的中文版,按照章节组织,与原版英文书籍一一对应。同时,项目还对原版英文书籍中的图片进行了翻译。

在翻译过程中,采用了分阶段的翻译方案,先使用AI翻译助手进行粗翻译,再由另一个AI Agent进行审查与修正,最后进行人工精细翻译,确保翻译的准确性和流畅度。此外,译者还加入了自己在遇到不理解或不了解的部分时的思考和解读,帮助读者更深入地理解大模型的各个方面。

对于希望深入了解GPT等大模型架构、训练过程及应用开发的开发者来说,《从头开始创建LLM大模型》这本书及其中文翻译版本是不可多得的学习资料。

分享手动安装搭建Flux-GYM训练工具

哎,其实我更希望分享一些高级一些的东西。天天整这些也不是个事,但是为了能够搭建本地训练环境还是咬着牙踩这个坑。

言归正传,说下基本的配置要求,这个工具要求python版本要在10-12之间,你可别装13的python版本,因为后续会给你安装依赖库带来报错,查来查去最终是因为13版本并不匹配。

另外先安装好Microsoft visual tool生成工具,Visual Studio 2022 版本最好,并且安装完成勾选C++ 桌面开发

再其次,一定要安装nump 1.26.0的版本,2.0以上依赖库会出现冲突。安装node-v20.14.0-x64,安装Rust。这些都是在安装过程中需要对依赖进行编译才能成功安装的基础工具。

对了,Microsoft visual tool C++ 编译器安装成功一定要在环境变量中加入path,set PATH=%PATH%;C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64

可以根据14.29.30133改成你自己安装的版本,以上命令在CMD中运行可加入(强烈建议手动添加)。

以上基础工具安装完成,再根据github中的要求按步骤进行安装。

克隆项目到本地,再从创建python的venv虚拟目录创建,激活并安装依赖都是正常的,我在sd-scripts安装依赖到flux-gym根目录下安装依赖都正常。

最后一步,唯独在这一段:pip install –pre torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cu121

命令安装 2.5.1+cu121出现报错。为啥呢?因为requirements中并没有将这个包:optimum-quanto 指定安装版本,因为optimum-quanto要求 torch>=2.6.0,但系统安装的版本是 2.5.1+cu121

对此那就将optimum-quanto指定下版本, pip install optimum-quanto==0.2.6

最终安装完成,折腾了我3个小时。真是感谢作者吼。

以上,希望在遇到同样问题的人能够提供帮助。

训练Dreambooth-XL模型比较节省显存的做法

在训练Dreambooth-XL模型中,4090和3090已经是大部分普通设计师能够使用的显卡训练了,训练Dreambooth比训练lora需要更多的训练集,同时Dreambooth模型支持更多的概念同时训练,而lora更多是解决单一概念的风格微调。

这就导致更多的训练集需要更多的步数才能拟合,也就对训练的显卡显存有更高的要求。

本文分享一个能够针对Dreambooth-XL模型训练优化参数节省显卡显存并降低训练时间的方法。我在这里主要是修改了三个地方:

我的训练集为622张,最大轮数为30epochs,修改batch_size参数为4,这样可以加快训练速度。

如果你不打算训练lr文本编码器(也就是不再赋予模型更多的语言理解能力),可以将lr的学习率直接去掉,仅训练模型的Unet部分。

同时将开启余玄重启次数为2,开启梯度检查点

将以上参数设置好之后就能顺利开启训练:

以上为3090ti的显卡配置,去掉文本编码器的学习率将batch-size:改成 4

如果你不需要模型赋予更多的语言理解能力,可以参考以上参数进行调整。

以上参数的调整证明了修改以上参数能够将batch-size改成4并且能够正常训练(不做修改则只能将batchsize调整成1,否则会终止训练并报错),减少了学习步数,加快的训练速度。

分享一个不全面不客观的flux-train训练工具测评

黑森林团队出的flux模型因其强大的参数,惊艳的细节效果广受欢迎,现在已经在各类AIGC平台占有很大的曝光量,甚至现在libulibu首页也是主推f1.0的lora模型,因其少量数据的微调就能获得很好的效果受到很多人的喜欢。

因为职业关系,我在工作上也尝试了flux-lora模型训练,接下来我分享pinokio-flux-gym训练工具和flux train-aitoolkit 两种工具的差别。

pinokio-fluxgym

优点:安装简单,易上手

缺点:只能训练flux-lora模型,如果想要训练sd1.5和XL模型你需要在社区中找到Kohya训练工具

Pinokio是一个AI社区浏览器,它整合了很多AI工具及工作流。它的优势在于即使你是一个不懂编程语言的小白也能轻松配置好flux lora 的训练环境,安装好pinokio工具之后,直接在探索中找到fluxgym,即可一键安装,其中python环境、第三方依赖性、模型配置等等你完全不需要自行考虑。坐等它配置好就行。

它底层基于Kohya Scripts开发,所有的参数设置都是统一的。在前端界面上采用三分法的布局设计,简化了操作步骤,123的布局设计让人一目了然,降低的理解门槛。在刚开始阶段,你都不需要详细了解具体的参数设置,只管提供优质的训练集就能拿到很好的模型效果,点赞。

实时的训练预览效果,它提供多种不同的预览图触发效果:

1.否定提示词

2.指定生成图像的宽度和宽度

3.指定生成图像的种子

4.指定生成图像的CFG比例

5.指定生成中的步骤数

支持显卡显存12G、16G、20G以上

支持的底模:flux-dev、flux schnell、flux-dev2pro(实际上训练最好用flux-dev1.0、flux-dev2pro)

FluxGYM可以修改训练集的数量 app.py文件,将 MAX_IMAGES = 修改即可

import os
import sys
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
os.environ['GRADIO_ANALYTICS_ENABLED'] = '0'
sys.path.insert(0, os.getcwd())
sys.path.append(os.path.join(os.path.dirname(__file__), 'sd-scripts'))
import subprocess
import gradio as gr
from PIL import Image
import torch
import uuid
import shutil
import json
import yaml
from slugify import slugify
from transformers import AutoProcessor, AutoModelForCausalLM
from gradio_logsview import LogsView, LogsViewRunner
from huggingface_hub import hf_hub_download, HfApi
from library import flux_train_utils, huggingface_util
from argparse import Namespace
import train_network
import toml
import re
MAX_IMAGES = 650 //修改训练集数量

flux train-aitoolkit

优点:远程训练, 面向专业级玩家、专业的UI界面

缺点:不稳定,需要简单的代码阅读能力,要配合ChatGpt或者deepseek使用

flux train-aitoolkit 目前处在一个早期版本,意味着在稳定性、功能可能不是那么的好用,该工具并非基于Kohya Scripts开发,其目录结构也和我见到的不同,因为自己对这块认识不够专业性,不便多说。

它最大的特点是基于huggingface远程访问的方式训练模型,这意味着你需要使用huggingface账户,从huggingface获取一个READ密钥,方可进行训练。

它支持FLUX.1-schnell、Flux-dev两个版本的模型训练,因为需要在本地预先写好模型配置信息,所以你需要一定的耐心来配置远程访问的信息。说实话,笔者在github上安装完这个工具都头大,你需要有一定的耐心和好奇心。否则很容易劝退。

Screenshot

笔者在配置以上两个工具都遇到diffusers无法正常克隆的情况,所以你在配置这两个工具都要开启全局git代理,否则很大几率会克隆不成功报错。

如果依然报错请使用国内镜像:https://gitee.com/opensource-customization/diffusers

训练打标

flux的特性是基于自然语言描述打标,所以你在训练中请使用触发词和自然语言描述打标,这样在训练中能够得到很好的效果。这意味着你需要使用GPT、caption等模型工作流来处理你的训练集。笔者实际尝试过仅用tag来打标,发现训练效果并不好(基于秋叶lora-script)。

分辨率

flux对尺寸分辨率没有特殊要求,小到512、大到1024,768*1024也是可以的。

实际跑图

实际使用上,权重同样是0.7-0.9之间最好,并且是触发词加自然语言描述,你的描述越多,生成的效果越细节。这也意味着你在使用上需要对画面更具体的要求,甚至在想法没有那么具体的情况下需要借助deepseek这类工具给你提供帮助。