首页 > 其他分享 >开源flux适配昇腾NPU分享,体验120亿参数AI文生图模型

开源flux适配昇腾NPU分享,体验120亿参数AI文生图模型

时间:2025-01-07 16:35:43浏览次数:1  
标签:flux 文生 适配 模型 AI 开源 开发者 NPU

这一期我们分享一位开源开发者参与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的虚拟环境。

第一步:进入创建的conda环境,安装相关依赖

在代码仓库中,是由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,文生,适配,模型,AI,开源,开发者,NPU
From: https://www.cnblogs.com/huaweiyun/p/18657885

相关文章

  • 论文阅读:ERNIE 3.0: Large-scale Knowledge Enhanced Pre-training for Language Unde
    简介ERNIE3.0融合了自回归和自编码,在由纯文本和大规模知识图谱组成的4TB语料库上训练大规模知识增强模型,传播了自然语言理解、自然语言生成和知识提取三个任务范式。框架自然语言处理的不同任务范式始终依赖于相同的底层抽象特征,例如词汇信息和句法信息,但顶级具体特征的要......
  • AppDomainManager注入是一种针对.NET应用程序的高级攻击技术,攻击者通过操控AppDomain
    什么是APPDomainManager注入?APPDomainManager注入通常涉及到利用**应用程序域(AppDomain)**来执行恶意操作,特别是在.NET环境下。要理解这个概念,我们需要了解几个关键术语:AppDomain:在.NET应用程序中,AppDomain是一个隔离的执行环境,它允许多个应用程序或应用程序的不同部分在同一进......
  • Visual Studio 2022 上架腾讯云 AI 代码助手了
    近期在VisualStudio市场上上架了腾讯云AI代码助手。该插件可以在VisualStudio2022版本(含社区版,版本不低于17.6即可)使用智能辅助编码能力,助力VisualStudio的开发者提高效率。我们在该平台上支持技术对话、代码补全、单元测试生成、解释代码、修复代码等场景。如何安装......
  • 3 分钟教你使用 MarsCode AI 生成在线图表
    3分钟教你使用MarsCodeAI生成在线图表需求对于前端开发者来讲,应该必不可少的会碰到开发在线图表的需求。国内开发者要开发在线图表应该都绕不过echarts对于很多刚上手echart的小伙伴来说,查阅配置文档是一个很痛苦的事情。上手echarts一般上手echarts的步骤如下查......
  • 深入解析 Spring AI 系列:项目结构一览
    从今天起,我们将以SpringAI为主线,开始更新一系列的文章。这些文章将围绕SpringAI项目展开,结合我的理解,深入讲解其相关的知识点、技术原理、以及在实际开发过程中涉及到的部分代码实现等内容。通过这些文章,希望能够帮助大家更好地理解和使用SpringAI。今天的主题是将对Spri......
  • 云上攻防-云原生&K8s安全&实战场景&攻击Pod&污点Taint&横向移动&容器逃逸
    知识点1、云原生-K8s安全-横向移动-污点Taint2、云原生-K8s安全-Kubernetes实战场景一、演示案例-云原生-K8s安全-横向移动-污点Taint如何判断实战中能否利用污点Taint?设置污点kubectltaintnodesnode1xtz=value1:NoSchedule去除污点kubectltaintnodesnode1xtz:NoS......
  • 当代码变成“一次性用品”?聊聊伴随AI兴起的 OTC (One Time Coding)
    各位码农朋友们,最近有没有听到一个略显“随意”的编程新词——OTC(OneTimeCoding)?它不像我们熟悉的软件工程那样严谨,甚至带着点“用完就扔”的洒脱。但这看似有点“野路子”的编程方式,却伴随着大语言模型的兴起,悄然走进了我们的视野。今天,我们就来好好聊聊这个有趣的现象。......
  • 豆包AI数学对话的底层逻辑
    引言;在一次偶然的机会我使用豆包AI在求解一道数学题目的过程中,发现了最基本的数学公式,即便是我认为AI数学对话中的底层逻辑,本次我的研究,也是基于这一底层逻辑进行分析,刨析AI对话中如何实现从图片到解题这一过程,了解AI数学对话的底层思想对于豆包AI,其求解数学题目分为如下几......
  • CDS标准视图:维护策略数据 I_MaintenanceStrategyData
    视图名称:维护策略数据I_MaintenanceStrategyData视图类型:基础视图视图代码:点击查看代码@AbapCatalog.sqlViewName:'IMAINTSTRATDATA'@AbapCatalog.compiler.compareFilter:true@AccessControl.authorizationCheck:#CHECK@EndUserText.label:'MaintenanceStrategy......
  • CDS标准视图:维护策略描述 I_MaintStrategyTextData
    视图名称:维护策略描述I_MaintStrategyTextData视图类型:基础视图视图代码:点击查看代码@EndUserText.label:'MaintenanceStrategy-Text'@ObjectModel.dataCategory:#TEXT@VDM.viewType:#COMPOSITE@AbapCatalog.sqlViewName:'IMAINTSTRTXTDATA'@AbapCatalog.compi......