flux适配昇腾开源验证任务心得
flux适配昇腾开源验证任务心得
根据任务计划书(https://onebox.huawei.com/p/fef4f00a5a7e67aba890b0b5573d0e4b)了解任务内容,主要目的是将 flux项目适配至华为的 Ascend(昇腾),确保其在昇腾上能够正常运行,并完成文本到图像的功能验证。
开发过程
明确目的后开始熟悉模型,flux模型的github网址:https://github.com/black-forest-labs/flux ,把flux项目从github上用git拉取下来。
NPU验证推理
(1)安装依赖包
NPU上需要CANN、torch_npu、pytorch
安装CANN,参考:
https://www.hiascend.com/zh/developer/download/community/result?module=cann。
torch_npu的安装参考:https://github.com/Ascend/pytorch/blob/master/README.zh.md。
注:
1、torch_npu、torch均可下载2.1.0版本,代码仓库提供的下载依赖的命令会自动下载2.5.1版本的torch,需要手动重新下载
2、建议下载模型权重文件到服务器上,否则会执行一次命令就重新拉取一次,涉及其他相关权重:t5-v1 _1-xx1、openaiclip-vit-large-patch14
(2)修改推理代码
1、数据类型为bfloat16,Ascend NPU设备上部分算子不支持,需要修改数据类型为float32
2、相关加载到CUDA设备上的代码手动修改为NPU
3、涉及修改的代码包括util.py、cli.py、conditioner.py、model.py、sampling.py、
util.py脚本修改:模型权重文件路径修改为本地路径
conditioner.py脚本修改:util脚本中T5、CLIP加载路径修改为本地路径,需修改相应代码逻辑
model.py、sampling.py、cli.py:CUDA设备替换
1 验收材料
1.1 交付件清单
(1)开源软件fork地址:不涉及
(2)开源软件修改记录(可以有多个修改记录):不涉及
(3)推送上游社区PR(包括代码、文档、可以有多个):不涉及
(4)验证DEMO地址:https://gitcode.com/zwq0201/flux/overview
(5)验证DEMO修改记录(可以有多个修改记录,只包含和本任务验证强相关的提交记录,比如添加依赖、增加配置文件、演示开源软件功能使用的代码等):无
(6)博客地址:https://bbs.huaweicloud.com/blogs/440639
验收细则 |
评分说明 |
是否为验收必选项 |
结果(通过/不通过) |
验证举证 |
功能开发:完成与华为三大根技术生态昇腾云适配的功能开发和验证。 |
基于昇腾完成验证。 |
是 |
(4)(6) |
|
代码质量:适配华为三大根技术生态的代码质量经过工具检测达标 |
推送给开源社区的代码符合开源社区关于代码风格、功能、自动化测试等要求。 |
否 |
||
提供相关文档,比如部署文档、使用文档、配置文档等 |
根据社区要求,完善相关的开发指南和部署指导 |
否 |
||
合入到开源项目主仓:代码推送上游社区 |
代码合并到当前主干分支。举证提供代码仓库链接。 |
否 |
||
Deomo设计&开发:完成功能演示Demo的开发 |
举证提供DEMO仓库地址和DEMO开发提交记录。 |
是 |
(4) |
|
Demo部署&验证:完成功能演示DEMO基于华为昇腾环境的部署和功能验证 |
提供DEMO部署验证结果的关键截图进行举证。提供DEMO运行环境和资源的规格清单。 |
是 |
参考资源清单和验证截图。 |
|
发布博客:发布博客介绍适配心得。 |
提供博客的地址。 |
是 |
(6) |
|
制作单机版无高危开源镜像。 |
上架云商店。 |
否 |
||
单机版镜像上架时支持模板部署。 |
否 |
|||
制作集群版无高危开源镜像 |
上架云商店。 |
否 |
||
集群版镜像上架时支持模板部署 |
否 |
2 资源清单
产品名称 |
NPU架构 |
操作系统 |
云堡垒机 |
Ascend 910B3 |
Huawei Cloud EulerOS 2.0 (aarch64) |
3 验证截图
3.1验证思路
从github上拉取flux仓库,在NPU搭建必需的环境和安装相关依赖,之后在项目中找到合适的启动方式进行验证,命令行输入需要转文字的文本,运行后生成对应的图片,可下载查看。
3.2 NPU推理结果
运行代码:
生成结果:
程序运行前:
程序运行后:
- 点赞
- 收藏
- 关注作者
评论(0)