- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
这一期我们分享一位开源开发者参与flux适配昇腾NPU的实践经验,欢迎广大开发者对华为技术栈适配进行讨论.
flux是一个AI图像生成模型,有120亿参数量,具有大量的用户基础,可以根据命令行输入的文字去生成对应的图片。本次适配使用的flux模型权重文件是schnell版本.
下面我简单分享一下flux模型适配昇腾NPU的实践心得,如有改进之处,欢迎指正,也希望对华为生态感兴趣的小伙伴可以加入进来一起探讨.
本次适配我需要在拥有昇腾NPU的主机上将flux模型运行起来,验证其功能是否可以正常使用。昇腾NPU主机需要先安装CANN软件,CANN软件的安装可参考昇腾社区的开发资源。后续的所有操作都在此主机上进行.
在GitHub平台上下载项目源码(点击链接下载),通过分析README文件中的内容可以知道flux模型开发环境所需要的python版本是python3.10,其相关依赖都封装在pyproject.toml文件中。同时flux模型主要采用python语言进行开发,所以我使用anaconda管理模型环境。anaconda作为环境管理工具,可以为不同的模型创建独立的环境,这样可以避免依赖版本冲突,保持环境的整洁性。该主机需要的anaconda为Linux系统ARM64版,查找相关文档进行安装配置后,使用anaconda去创建属于flux的虚拟环境.
在代码仓库中,是由pyproject.toml文件去管理的依赖,使用【pip install -e ".[all]"】命令下载依赖。我们下载好flux模型所需要的相关依赖之后,需要安装对应版本的torch_npu,使pytorch框架可以运行在昇腾NPU上,这样flux模型所需要的环境就搭建完成了。torch_npu是华为为昇腾NPU设计的pytorch后端库,使得pytorch框架能够在昇腾NPU上运行,是连接pytorch框架与昇腾NPU的桥梁.
我先运行了一次模型,发现权重文件在运行时会自动从Hugging Face上下载,由于模型权重文件较大,且每次运行都会重新下载,比较占用内存。所以我们提前下载模型权重文件到主机上.
分析代码文件,涉及到的相关模型权重有以下3个:
t5:文本转换为机器理解的语言 。
clip:文本转换为图像 。
flux:图像生成 。
flux模型权重文件下载完成后,就可以修改相关代码,实现模型权重文件从本地加载.
在之前的代码逻辑里面,判断加载哪一个模型是基于模型的名称去进行判断的,但是我们现在传入的参数是路径,这个方法不适用,需要修改代码,直接说明加载的模型是T5或者CLIP.
然后运行模型,报错提示设备为CUDA,但我的设备是NPU。根据这个报错信息,我进行了对应的修改,将device="CUDA",改为device="NPU" 。
再次运行之后报错提示bfloat16不支持在这个设备上,我根据这个报错信息,找到bfloat16的位置,修改为float32 。
进行这些修改之后,运行模型,查看NPU已经进入了运行状态.
测试结果:
经过测试,模型可以通过输入的内容,去生成对应的图片,所以模型的功能在此主机上可以正常使用了.
。
期待各位小伙伴的加入,一起体验适配带来的乐趣。在体验过程中,如有问题可点击链接进入开源开发者专属问答区,加入开源开发者专项计划。加入我们,您可以在项目中提 Issues与其他开发者进行互动,也可以添加项目相关的微信群进行技术讨论与交流.
沃土云创开源开发者专项计划是华为给开源开发者提供专属激励资源,鼓励开发者积极参与开源 for Huawei适配,践行“让优秀开发者支持更优秀开发者”的理念.
。
点击关注,第一时间了解华为云新鲜技术~ 。
最后此篇关于开源flux适配昇腾NPU分享,体验120亿参数AI文生图模型的文章就讲到这里了,如果你想了解更多关于开源flux适配昇腾NPU分享,体验120亿参数AI文生图模型的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
ios10 适配-xcode8 问题解决: ios开发者,系统版本的更新,必定要跟着更新,不然有些功能不知道,开发的时候对可以体验,大打折扣了。 前段时间升级了xcode8,整体来说对oc的影响不
问题 TableView 的 setTableMenuButtonVisible 提供了一种机制来更改表列的可见性。然而,该功能还有很多不足之处: 菜单应保持打开状态。我有 e。 G。 15个表格列,
我正在开发一个使用 MapKit 的应用程序。鉴于 2012 年 6 月 11 日的 Apple 公告,我是否必须使用新的 API 完全重写它才能跟上这些变化? 最佳答案 iOS 6 仍处于 NDA
最近看了许多iphone x适配的文章,发现很少有介绍safearea的,就来随便写写 现在对于iphone x的适配,有一种常见的做法是给导航栏或tabbar增加一个固定的距离,比如顶部增加44
我正在使用 Big Nerd Ranch's recyclerview-multiselect库为我的 RecyclerView 的 CardViews 提供多选功能。我已经解决了大部分应用程序特定的
The Table with bad text-alignment 在图片中,您会看到文本对齐不正确的表格。 tbody 的元素不适合 thead 的元素。表头固定很重要,这样即使向下滚动也能看到。
我将尝试设置我的应用程序,以便它可以使用 Apple map 或 Google map ,所以我想我会有这样的东西: class AppleMap: MKMapView, MyMapProtocol
我已经在网站上工作了大约一个星期,我们需要包含一些非常规字体。没问题,我会在 CSS 中使用 @font-face{},它就像一个魅力。 . .除非你的名字是 Internet Explorer。 由
我遇到了一个问题,csv 文件中的字符显示为带有 ?在中间。 我已经编写了解析 csv 的代码,但我不明白为什么字符串不能正确读取 unicode 字符。这可能与我的实现有关: StreamReade
试图在底部模仿当前的谷歌地图栏。我失败了那么多,也尝试了那么多; CollapsingToolbar、BottomSheet、自定义库。 我想要的:当 BottomSheet 滑动时,让 map Vi
我有 5000 行 CSS 用于 Firefox、Opera,有时还有 IE 8。毕竟,account 告诉我,它必须在 IE 7 下正常工作。我该怎么做,而不重写 40% 的代码? 最佳答案 在
我使用 Glide 和 CircleTransform 将圆形图像放入此 ImageView。 ImageView 具有 wrap_content 属性,但是 ImageView 不适合 Circle
为什么 Apache Hive 需要 Apache Thrift?在 Thrift 的网站上,它说它可以用多种语言编译,但我不明白它适合哪里以及为什么 Hive 需要它。谢谢 最佳答案 引用 from
我使用此命令在 m4v 中转换了一些 YUV 视频,请注意我使用的是 CIF 格式的视频: ffmpeg -s cif -r 30 -i video.yuv -vcodec mpeg4 -g 30 -
我已从教程中获取代码并尝试对其进行修改以包括双向性和 GRU 的任意数量的层。 链接到使用单向、单层 GRU 的教程: https://pytorch.org/tutorials/intermedia
在使用 C++ 11 进行测试期间,我使用了以下结构: std::for_each( coll.begin(), coll.end(), [ &obj, expRes ]( const val
假设我有一个带有 std::pair 的 STL 容器。有什么方法可以使用 boost 为 STL 算法 lambda 调整对的秒数? std::vector> vec; const auto Pre
我有一个自定义的 ListView 适配器,它实现了一个 ImageThreadLoader 类。不幸的是,该类没有启用缓存选项 - 从 Web 下载图像并将它们保存为缓存。 然后我找到了这个 Laz
我有一个关于在 CSS 中使用 PHP 的一般性问题。我现在正在研究 Wordpress 主题,并希望尽可能地定制它。因此,我将我想通过 PHP 更改的 CSS 属性发送到一个为我更改它们的 JS 文
我安装了包 react-treebeard https://react.rocks/example/react-treebeard 允许我为我的 React TS 网站提供一个开箱即用的树控件,它允许
我是一名优秀的程序员,十分优秀!