想在骁龙8Gen3上运行StableDiffusion,并不是那么容易啊!

查理谈科技 2024-06-05 03:56:22

最近在研究安卓手机上运行stable diffusion, 一开始用的是Tmx 的Linux 环境下,通过安装Stable-Diffusion.cpp, 因为Stable-Diffusion.cpp是Stable-Diffusion的C/C++的封装版, 类似于Llama.cpp, 纯粹使用C/C++语言来做大语言模型在CPU上的推理。

这个方案是经过验证的, 我在一个旧的安卓手机,红米K30, 一部2020年买的手机上已经成功运行了这个项目, 速度有点慢,但是还是可以出的图~

上面这几张图,都是我在红米k30上的作品,只是需要等待时间久一点而已, 这些照片只使用了基础模型, 没有使用插件, lora等小工具,图片虽然细节上有些拉垮,但是能保证基本可用。

我觉得对于AI的小白或者初学者, 想接触或者了解最基本的Stable-Diffusion这种生成式AI, 从文字产生图片这种类型的AI 来说, 这个工具就是最适合他们的工具——不用花费额外的支出, 只需要找一部安卓手机,经过适当的配置就好了。

就我而言, 这个配置时间, 也就是30分钟左右。 然后手机插上电源, 保持屏幕常亮,等待就好了。

命令也很简单, 都能看懂的:

sd \

--threads 8 \

--model "./models/sd-v1-4.ckpt" \

--output "./output/output1.png" \

--prompt "a lovely girl, (best quality:1.3), (high quality:1.6), (cute:1.3), (ribbon)" \

--negative-prompt "(low quality:1.5), (worst quality:1.7)" \

--cfg-scale 7.0 \

--sampling-method euler_a \

--steps 20 \

--seed 0 \

--clip-skip 2 \

-W 512 \

-H 512 \

--type f16 \

-v

整个执行过程,就如图五的gif 文件所示:

本来执行完这个, 这个尝试也差不多了, 但是, 头条的朋友们提出说, 现在高通的骁龙8 第三代,也就是骁龙 8 Gen 3 ,是当前安卓手机的旗舰芯片, CPU 和GPU的能力都特别强, 想要看看在这种手机上运行会怎么样。 这必须安排!

买的新手机是红米K70 Pro, 之所以买这个手机的性价比很高, 配置是骁龙8 Gen3, 16G运存,256G 存储, 2K 屏幕, 对我而言这是不错的选择了, 当然还有更高的配置, 有24G内存/1 T 存储的, 需要三千七百多, 太贵而且也不需要。

买来之后, 研究了一下, 发现高通在发布骁龙8 Gen 3的时候, 提到CPU强大、GPU 强大的同时(安兔兔跑分啊啥的, 网上内容很多的),也提到了大语言模型的本地运行支持。

高通的宣传语是这么写的:“支持强大生成式 AI,生成图像等迅速可靠,且在本地设备上安全运行,让手机变成你的个人助理和创意伙伴”, 看起来高通对于本地运行大语言模型是很支持的, AI也是骁龙8 Gen3的一个重要卖点。

仔细的看高通的文档材料, 才发现, 高通的这一宣传, 里面还是很有“门槛”的。

并不是说他不支持这一功能,而是说, 高通对于手机设备上运行大语言模型, 并不是直接发布一个App 应用,类似于MLC LLM或者Layla Lite,让用户直接去下载App、运行模型去体验。对于上面提到的这两款App, MLC LLM和Layla Lite, 我觉得这是少数能在Android 本地运行大模型的app , 真的是从云端下载到本地运行, 其他的还真没看到。

而是,他做了一个AI hub , 主要是提供一个底层框架, 让开发人员基于他们的AI Engine 框架来去运行大语言模型, 而且需要使用经过高通“验证”过的大模型, 他们使用的运行时(runtime),包括TensorFlow Lite、Qualcomm AI Engine Direct和ONNX, 这就提高了验证的门槛, 能熟练使用这三个运行时框架的人,基本上都是有一定经验的AI研究人员了, 非一般人所能及也。

这么说很抽象, 来看看图七, 这是https://aihub.qualcomm.com/mobile/models的网页截屏,

在AI hub model中, 提供了生成式AI的支持, 其中包括Stable-Diffusion 1.5 和2.1, 但是当我们进入其中的一个模型, 例如Stable-Diffusion 1.5(链接:https://aihub.qualcomm.com/models/stable_diffusion_v1_5_quantized),图 八所示。

在这里模型也可以下载, 但是看看下面的详细介绍:

Input:Text prompt to generate image

QNN-SDK:2.20

Text Encoder Number of parameters:340M

UNet Number of parameters:865M

VAE Decoder Number of parameters:83M

这其实对于使用这些模型,提出了很高的要求的, 要求对于QNN等有所了解。

基于此, 我之前的在Android 上的运行Stable-Diffusion的操作, 实际上并没有充分利用好骁龙8 Gen 3 的GPU 能力, 充其量算是对CPU的计算能力进行验证吧。

后期,会先发一个骁龙8 Gen 3上运行Stable-Diffusion.cpp的视频, 看看这款芯片的CPU 计算能力如何。 至于GPU 的调用, 还是等我学会了QNN SDK的使用方法吧。

另外, 也可以发一下运行一下MLC LLM 或者Layla 的视频, 很好玩的App, 国内的对话类的App 很多很多,不知道有没有真正能在本地运行LLM的App, 有了解的推荐一下哈。



0 阅读:0

查理谈科技

简介:感谢大家的关注