01背景
最近AI行业的发展真是日新月异,自年初以来ChatGPT的火爆,几乎每隔几天都被各种新产品发布刷屏,从GPT-4、文心一言到Microsoft 365 Copilot、Github Copilot X、ChatGPT Plugin等等。AI正在掀起一场新的生产力革命,以集成了AI能力的Office和Github为例,仅仅使用简单的语言进行描述就能在Word中轻松生成初稿和总结,在Excel中自动分析关键趋势并创建数据模型可视化等操作,在PPT中快速制作出漂亮的演示文稿。AI还可以通过分析注释,函数名,上下文,基于分析结果给出自动补全建议、函数和方法调用、甚至是完整的代码段。对于那种常年无人维护的项目,还能帮助你分析,生成文档,编写注释。从此程序员悖论——程序员最讨厌的两件事:“别人不写文档”以及“写文档”,今天终于被AI彻底解决了。因此,老板想我蹭一把热度——将Lindorm AI 引擎光速对AIGC相关模型适配,然后写个文章,一开始我是拒绝的,蹭热点不是我这种务实又进取的程序员的风格,但看我余额为0的钱包还是不得不开工。既然介绍AIGC ,那我把老板需求提给ChatGPT应该不过分吧。
AIGC是AIGC是(AI-Generated Content)的简称,通常指的是使用人工智能技术生成的各种内容,包括文本、图像、音频和视频。这些内容是通过使用机器学习算法和神经网络等技术进行训练和生成的。
...
这不是写的比我还好!火速化身为CV工程师 (Ctrl+C 和 Ctrl+V) 把文档转发给老板不就完事了。老板说小伙子不错啊,让你调研AIGC不是让你当需求路由器呀。你得把最新最牛逼的产品让读者知道AIGC具体是个啥玩意,ChatGPT知识比较落后,还得靠你亲自调研。好吧让我看看最近营销号什么东东火,就是你了Midjourney v5。prompt:A pair of young Chinese lovers, wearing jackets and jeans, sitting on the roof, the background is Beijing in the 1990s, and the opposite building can be seen —v 5 —s 250 —q 2.
*注:图片及文字部分来自Midjourney官方
这幅作品是由Midjourney推出,由人工智能(AI)生成的“中国情侣”图片在国内外社交媒体上广为传播。这幅作品逼真的视觉效果让很多网友惊叹,认为“AI已经不逊于人类画师了”。该工具是继GPT-4之后又一个备受关注的AI产品。(聪明的你肯定猜到了,这句话又是ChatGPT生成。)只需要在Midjourney中输入上面这段英文prompt,就可以生成这张图片,是不是很酷炫!
02AIGC与数据库
AIGC这么好用,还不赶紧做个APP玩一玩,万一火了,搞个公司上市,走上人生巅峰,指日可待。不过,对于我这种小白程序员,只会写前端和SQL,对这些模型又不太了解,更别说还要部署复杂的服务架构。该咋办呢?
来了来了,Lindorm AI 引擎它来了,使用Lindorm AI 引擎的In-DB Inference功能,仅仅需要写几句SQL,就能在数据库内完成模型部署和推理,省去一系列安装部署步骤,快速搭建起一个AIGC应用。那么什么是Lindorm AI引擎, 什么是In-DB Inference呢,具体的操作方法是什么呢?
03Lindorm AI 引擎
Lindorm是面向互联网、物联网中的海量非事务数据设计和优化的云原生多模数据库,支持结构化、半结构化、非结构化数据的统一存储和计算,提供宽表、时序、时空、对象、流等多种处理模型,并兼容多种开源标准接口和无缝集成三方生态工具,满足车联网、自动驾驶、监控、推荐、风控、账单、工业互联网等业务场景的需求。Lindorm AI 引擎是Lindorm最新推出的支持在数据库内集成 AI 能力对非结构化数据进行智能分析和处理的引擎,结合Lindorm已有的对结构化和半结构化数据的分析和处理能力,这使得多模数据的融合分析成为可能。伴随着 AI 模型生态的逐渐成熟,如框架、格式逐渐收敛统一,以及一些开源模型平台(如ModelScope、HuggingFace)的出现,让一些常用的模型唾手可得,可以预见到未来更多的需求是直接使用这些预训练模型对数据进行推理,或微调,而不是从头训练一个新的模型。为此,Lindorm AI 引擎即将推出BYOM(Bring Your Own Model)功能,支持导入预训练模型在数据库内直接进行推理的能力,就是In-DB Inference功能。
Lindorm AI 引擎支持用户自己上传预训练模型到数据库中,也支持直接从开源模型平台(包括ModelScope、HuggingFace)导入模型的功能,用户无需下载模型就可以很方便地完成模型在 Lindorm 内的部署和推理。Lindorm AI 引擎会根据用户指定的模型平台上的模型路径,自动下载模型并针对Lindorm AI 引擎使用的推理节点硬件对其进行适当的优化,以达到最佳的运行效率。
*ModelScope:https://modelscope.cn/home
04Lindorm AI In-DB Inference使用介绍
Lindorm AI In-DB Inference功能的使用非常简单,首先用户通过一个CREATE MODEL的SQL在数据库中导入模型,指定模型在数据库中或ModelScope/HuggingFace中的路径,以及对应的CV、NLP任务等信息。然后就可以使用一个SQL函数指定刚刚导入的模型使用数据库中的数据作为输入进行推理。
05利用Lindorm AI 引擎进行AIGC应用开发Demo
根据文本生成设计图
▶︎ 模型背景
这里我们以ModelScope上的中文StableDiffusion模型为例,演示如何在Lindorm AI 引擎内完成根据文本生成设计图。Stable Diffusion是一种AI文本生成图片的扩散模型,能够在给定文本输入的情况下生成逼真的图像。
▶︎ 构建步骤
1. 在Lindorm数据库中创建室内设计文本描述表,将用于生成图片的文本插入到表中,这里我们插入了3条关于室内设计的文字描述:
lindorm:default> CREATE TABLE `room_desc` ( > `room_desc_id` INTEGER, > `room_desc` VARCHAR, > primary key(`room_desc_id`) > ); lindorm:default> INSERT INTO `room_desc` ( > `room_desc_id`, > `room_desc` > ) VALUES ( > 1, > '新中式风格的家居设计,在传统中式风格的基础上,融入了现代时尚的设计理念,打造出一个充满禅意的中式风格卧室空间。' > ), ( > 2, > '室内设计,开放式,厨房和起居室,模块化家具与棉织品,木地板,高天花板,大钢窗,可以看到一个城市。' > ), ( > 3, > '高分辨率摄影室内设计,梦幻般的下沉式客厅,木地板,通向花园的小窗户,包豪斯家具和装饰,高天花板,米色蓝色鲑鱼粉色调,室内设计杂志,舒适的气氛。' > ); 3 row affected (22 ms) lindorm:default> select * from room_desc; +--------------+----------------------------------------------------------------------------------------------------------------------------------------------+ | room_desc_id | room_desc | +--------------+----------------------------------------------------------------------------------------------------------------------------------------------+ | 1 | 新中式风格的家居设计,在传统中式风格的基础上,融入了现代时尚的设计理念,打造出一个充满禅意的中式风格卧室空间。| | 2 | 室内设计,开放式,厨房和起居室,模块化家具与棉织品,木地板,高天花板,大钢窗,可以看到一个城市。 | | 3 | 高分辨率摄影室内设计,梦幻般的下沉式客厅,木地板,通向花园的小窗户,包豪斯家具和装饰,高天花板,米色蓝色鲑鱼粉色调,室内设计杂志,舒适的气氛 | +--------------+----------------------------------------------------------------------------------------------------------------------------------------------+ 3 rows in set (30 ms)
2. 接下来我们使用Lindorm AI 引擎扩展的CREATE MODEL SQL语法自动从 ModelScope平台导入中文Stable Diffusion模型:
lindorm:default> CREATE MODEL `room_maker_model` > FROM 'modelscope://damo/multi-modal_chinese_stable_diffusion_v1.0' > TASK TEXT_TO_IMAGE > ALGORITHM STABLE_DIFFUSION; 0 row affected (63 ms)
3. 最后通过SQL调用推理函数 AI_INFER在数据库中使用刚刚导入的模型进行推理,Lindorm会先使用模型根据文本生成图片,自动保存成Lindorm内的BLOB对象类型,并返回图片的下载链接:
lindorm:default> SELECT > `room_desc`, > AI_INFER( > 'room_maker_model', > `room_desc` > ) as 'room_image' > FROM room_desc; +--------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | room_desc | room_image | +--------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | 新中式风格的家居设计,在传统中式风格的基础上,融入了现代时尚的设计理念,打造出一个充满禅意的中式风格卧室空间。 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873258559.jpg | | 室内设计,开放式,厨房和起居室,模块化家具与棉织品,木地板,高天花板,大钢窗,可以看到一个城市。 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873265155.jpg | | 高分辨率摄影室内设计,梦幻般的下沉式客厅,木地板,通向花园的小窗户,包豪斯家具和装饰,高天花板,米色蓝色鲑鱼粉色调,室内设计杂志,舒适的气氛。 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873271757.jpg | +--------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ 3 rows in set (7875 ms)
4. 通过得到的链接(备注:上述案例中的链接为测试实例所属VPC内网链接,无法通过公网访问)可以看到生成了三张室内设计图片。
设计文案
👇
新中式风格的家居设计,在传统中式风格的基础上,融入了现代时尚的设计理念,打造出一个充满禅意的中式风格卧室空间。
设计图
👇
设计文案
👇
室内设计,开放式,厨房和起居室,模块化家具与棉织品,木地板,高天花板,大钢窗,可以看到一个城市。
设计图
👇
设计文案
👇
高分辨率摄影室内设计,梦幻般的下沉式客厅,木地板,通向花园的小窗户,包豪斯家具和装饰,高天花板,米色蓝色鲑鱼粉色调,室内设计杂志,舒适的气氛。
设计图
👇
对设计图进行风格变换
▶︎ 模型背景
ControlNet是前段时间比较火的能够对Stable Diffusion生成的图片进行各种条件控制的模型,这里我们用它来对刚刚生成的几张设计图进行风格切换。
▶︎ 构建步骤
1. 我们使用另外一个表来做演示,表结构设计为包含一个图片 URL 地址和一个 prompt 字段,用来维护想要对设计风格进行控制的提示词。我们为刚刚生成的 3 张图片各切换 3 种风格(分别是中式、地中海和工业风),因此一共得到 9 行数据(出于篇幅限制,这里省略了 INSERT 环节):
lindorm:default> CREATE TABLE `control_room` ( > `control_room_id` INTEGER, > `img_url` VARCHAR, > `prompt` VARCHAR, > primary key(`control_room_id`) > ); lindorm:default> select * from control_room; +-----------------+--------------------------------------------------------------------------------------------------+-----------------------------+ | control_room_id | img_url | prompt | +-----------------+--------------------------------------------------------------------------------------------------+-----------------------------+ | 1 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873258559.jpg | Chinese style, 1 room | | 2 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873258559.jpg | Mediterranean style, 1 room | | 3 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873258559.jpg | Industrial style, 1 room | | 4 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873265155.jpg | Chinese style, 1 room | | 5 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873265155.jpg | Mediterranean style, 1 room | | 6 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873265155.jpg | Industrial style, 1 room | | 7 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873271757.jpg | Chinese style, 1 room | | 8 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873271757.jpg | Mediterranean style, 1 room | | 9 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873271757.jpg | Industrial style, 1 room | +-----------------+--------------------------------------------------------------------------------------------------+-----------------------------+ 9 rows in set (25 ms)
2. 接下来同样使用SQL从HuggingFace平台导入ControlNet模型:
lindorm:default> CREATE MODEL `style_transfer_model` > FROM 'huggingface://lllyasviel/ControlNet' > TASK MULTIMODAL_TO_IMAGE > ALGORITHM CONTROL_NET; 0 row affected (68 ms)
3. 同样,通过调用推理函数AI_INFER在数据库中使用刚刚导入的模型进行推理,Lindorm会使用img_url对应的图片以及prompt作为模型输入,通过模型生成新的图片,并返回图片的 URL:
lindorm:default> SELECT > `img_url`, > `prompt`, > AI_INFER( > 'style_transfer_model', > `img_url`, > `prompt`, > 'control_type=seg' > ) as 'controlled_image' > FROM control_room; +--------------------------------------------------------------------------------------------------+-----------------------------+--------------------------------------------------------------------------------------------------+ | img_url | prompt | controlled_image | +--------------------------------------------------------------------------------------------------+-----------------------------+--------------------------------------------------------------------------------------------------+ | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873258559.jpg | Chinese style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873429213.jpg | | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873258559.jpg | Mediterranean style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873451405.jpg | | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873258559.jpg | Industrial style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873472694.jpg | | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873265155.jpg | Chinese style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873494592.jpg | | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873265155.jpg | Mediterranean style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873516370.jpg | | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873265155.jpg | Industrial style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873538218.jpg | | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873271757.jpg | Chinese style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873560219.jpg | | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873271757.jpg | Mediterranean style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873582595.jpg | | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873271757.jpg | Industrial style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873604486.jpg | +--------------------------------------------------------------------------------------------------+-----------------------------+--------------------------------------------------------------------------------------------------+ 9 rows in set (16219 ms)
4. 通过链接,我们可以看到切换风格后的图片:是不是很Easy就在数据库中完成了AIGC?还有更多有趣的用法等待你去尝试!
Lindorm AI 引擎目前处于邀测阶段,感兴趣可以加入钉钉群:20975001191 参与功能试用和讨论。
06未来展望
Lindorm AI 引擎实现了数据不出库,一站式智能处理,可以大大降低AIGC业务落地的使用门槛。未来我们还会进一步探索如何利用 AI 对非结构化数据的分析与处理能力实现多模数据的融合分析与处理。我们希望用户在采用Lindorm构建AIGC应用时,就像用MySQL构建库存订单管理一样简单!