魔乐社区新版来袭,全新功能等您来探索!

49 阅读10分钟

魔乐社区新版本功能来啦! 在本次更新中,我们不仅对工具链进行了升级,还对站点体验空间进行一些细致优化。以下是新版本带来的亮点特性,希望它们能为您提供更多便利,让模型实践更丝滑,体验更流畅。

新版本新增哪些特性功能?

先简单预览一下:

新版本(openMind Library 0.9.1)新增特性

  1. pipeline和openmind-cli run接口新增支持文生图任务;

  2. 新增支持MindNLP文本生成任务;

  3. 支持通过SiliconDiff库对diffusers进行推理加速。详见文档模型推理命令行接口

  4. openMind Library新增支持npu_rms_norm融合算子,详见文档融合算子使能

开发者体验提升

  1. 体验空间新增预装软件能力,详见文档体验空间预装软件

  2. 体验空间新增Chatbot、Text-To-Image、Text-To-Audio、Notebook等4种快速模板,助力开发者用户快速生成可运行的应用。

  3. 模型测试支持在NPU上执行文本生成任务的推理精度测试。

接下来,咱们来详细探索这些新功能吧!

【新增特性详解】

一、概述

openMind Library现已新增文本生成图像功能,能够通过解析文本中的关键词、语境和风格,将创意转化为视觉图像。此外,新增SiliconDiff推理加速技术,通过SiliconDiff库对diffuser进行优化,提升部署效率和性能。

openMind Library集成了MindNLP,新增基于MindNLP的文本生成任务,旨在帮助研究人员和开发者更高效地进行推理工作。

同时,openMind Library新增对npu_rms_norm融合算子的支持,使开发者在PyTorch框架下能够充分利用NPU的性能。只需简单调整from_pretrained参数或模型的config.json文件,即可启用融合算子,无需修改模型代码,既简化了操作流程,也显著提高了训练效率。

二、环境准备

安装openMind Library环境,详细步骤参考openMind Library安装指南

三、文生图任务使用详解

3.1 基于pipeline执行文生图任务

openMind Library pipeline的文生图任务是基于PyTorch框架的diffusers来推理,为用户提供了一个端到端的解决方案,使得文本到图像的生成变得简单快捷。

使用示例

  • 基于默认模型

pipeline的文生图任务设置了默认模型,不传入model参数的话默认使用的模型为SD-XL 1.0-base

  • 基于默认模型

    pipeline的文生图任务设置了默认模型,不传入model参数的话默认使用的模型为SD-XL 1.0-base

    from openmind import pipeline
    from PIL import Image
    
    pipe=pipeline(
        task="text-to-image",
        framework="pt",
        backend="diffusers",
        device="npu:0",
    )
    
    image = pipe("masterpiece, best quality, Cute dragon creature, pokemon style, night, moonlight, dim lighting")
    image.save("Dragon.png")
    

    在这里插入图片描述

  • 指定模型

    用户可以通过指定model参数来选择openMind Library支持的任意预训练模型,实现从文本到图像的生成功能。

    from openmind import pipeline
    from PIL import Image
    import torch
    
    pipe=pipeline(
        task="text-to-image",
        model="AI-Research/stable-diffusion-3.5-large",
        framework="pt",
        backend="diffusers",
        device="npu:0",
        torch_dtype=torch.float16,
    )
    
    prompt = "masterpiece, best quality, Pikachu walking in beijing city, pokemon style, night, moonlight, dim lighting"
    negative_prompt = "deformed, disfigured, underexposed, overexposed, (low quality), (normal quality),"
    
    image = pipe(prompt=prompt, negative_prompt=negative_prompt)
    image.save("Pikachu.png")
    

    在这里插入图片描述

关于pipeline的详细用法和接口可以参考模型推理Pipeline API接口

3.2 基于openmind-cli run执行文生图任务

openmind-cli run基于pipeline实现,提供了一个高效且易于使用的接口,兼容所有pipeline支持的任务类型。

接口调用示例

  • 基于默认模型

    openmind-cli run text-to-image --framework pt --backend diffusers --input "masterpiece, best quality, red panda , pokemon style, evening light, sunset, rim lighting"
    

    在这里插入图片描述

  • 指定模型

    openmind-cli run /data4/baymax/models/stable-diffusion-3.5-large/  --task text-to-image --framework pt --backend diffusers --input '{"prompt":"masterpiece, best quality, sugimori ken \(style\), (pokemon \(creature\)), pokemon electric type, grey and yellow skin, mechanical arms, cyberpunk city background, night, neon light","negative_prompt":"(worst quality, low quality:1.4), watermark, signature, deformed, disfigured, underexposed, overexposed,", "height":512, "width":512}'
    

    在这里插入图片描述

全量参数和更多用法请参考openmind-cli run接口

四、Silicondiff推理加速

4.1 SiliconDiff介绍

SiliconDiff是由硅基流动研发的一款扩散模型加速库,基于领先的扩散模型加速技术,旨在通过结合国内顶尖硬件资源,如NPU,提供高性能的文生图解决方案。

4.2 SiliconDiff加速原理

SiliconDiff整体基于torch compile+torch npu的技术方案,通过自定义的编译器后端支持算子融合、冗余计算消除和JIT优化,同时支持动态形状,切换形状无额外编译开销。

在这里插入图片描述

4.3 openMind Library使用

对于diffusers侧的任务,可以使用use_silicondiff参数来加速,提升推理的性能。

from openmind import pipeline
import torch

generator = pipeline(task="text-to-image", 
                     model="PyTorch-NPU/stable-diffusion-xl-base-1_0", 
                     device="npu:0",
                     torch_dtype=torch.float16,
                     use_silicondiff=True,
                     )

image = generator(prompt="masterpiece, best quality, Cute dragon creature, pokemon style, night, moonlight, dim lighting",)
4.4 性能提升

开启Silicondiff的性能提升如下。

Model未开启silicondiff开启silicondiff性能提升
Stable Diffusion v1.53.96s3.07s28.99%
SD-XL 1.0-base11.50s7.66s50.13%
Stable Diffusion v2.16.64s3.47s91.35%
4.5 精度无损

使用Silicondiff前后生成的图像对比如下。

Stable Diffusion v1.5

在这里插入图片描述

SD-XL 1.0-base

在这里插入图片描述

五、MindNLP文本生成

MindNLP是基于MindSpore全场景全栈AI框架构建的NLP类模型套件,可通过将openMind Library的framework参数设置为msbackend参数设置为mindnlp,实现对其调用。

5.1 基于pipeline执行MindNLP模型推理任务
from openmind import pipeline

generator = pipeline(
    task="text-generation",
    model="AI-Research/Qwen2-7B",
    framework="ms",
    backend="mindnlp",
)
outputs = generator("Give me some advice on how to stay healthy.")
print(outputs)

'''
 Give me some advice on how to stay healthy. Sure, here are some tips on how to stay healthy:
 
 1. Eat a balanced diet: Make sure you are eating a variety of fruits, vegetables, whole grains, lean proteins, and healthy fats.
 
 2. Stay hydrated: Drink plenty of water throughout the day to keep your body hydrated. 
 
 3. Exercise regularly: Aim for at least 30 minutes of moderate exercise most days of the week.
 
 4. Get enough sleep: Aim for 7-8 hours of sleep each night to help your body rest and recover.
 
 5. Manage stress: Find healthy ways to manage stress, such as meditation, yoga, or deep breathing exercises.
 
 6. Avoid smoking and excessive alcohol consumption: These habits can have negative effects on your health
 
 7. Practice good hygiene: wash your hands regularly, cover your mouth when you cough or sneeze, and avoid touching your face. 
 
 8. Get regular check-ups: Schedule regular check-ups with your doctor to monitor your health and catch any potential issues early on.
 
 Remember, staying healthy is a lifestyle choice that requires consistent effort and commitment. By making small changes to your daily routine, you can improve your overall health and well-being.
'''
5.2 基于openmind-cli run
openmind-cli run AI-Research/Qwen2-7B --task text-generation --framework ms --backend mindnlp --input "Give me some advice on how to stay healthy."

六、npu_rms_norm融合算子

openMind Library已支持Ascend Extension for PyTorch插件torch_npu提供的融合算子特性,让使用PyTorch框架的开发者更充分地释放NPU的算力。具体的使用方法见文档融合算子使能

【开发者体验提升】

一、体验空间新增预装软件能力

在魔乐社区创建体验空间后,系统会自动安装软件依赖并构建体验空间的镜像,以便启动后端服务。

如果基础环境预装的软件包不满足需求,用户可以利用体验空间的预装软件功能来定制环境。只需在仓库根目录创建setup.yaml文件,添加所需的系统软件,即可快速实现软件包安装,满足个性化环境配置的需求。详见文档体验空间预装软件。

举个例子

某些python库对系统软件存在依赖,例如,opencv-python依赖libGL.so.1

当用户使用opencv-python发现系统缺少依赖时,可以通过setup.yaml预装软件。

示例如下:

首先,在体验空间的根目录中点击“创建文件”,创建 setup.yaml

在这里插入图片描述

其次,打开setup.yaml, 使用package作为key值,待安装的软件列表作为value值,列表中的每个元素代表软件包名,通过apt/yum install安装。

例如,本例子中需要添加系统软件vimmesa-libGL:

在这里插入图片描述

随后即可在镜像构建日志里看到 vimmesa-libGL成功被安装。

在这里插入图片描述

二、体验空间新增快速模板,助力开发者用户快速生成可运行的应用

体验空间新增Chatbot、Text-To-Image、Text-To-Audio、Notebook等快速模板,创建空间时,只需选择对应的模板、License、算力配置和基础框架环境,再点击创建,即可生成一个可即时运行的应用。创建后的空间支持文件修改、日志查看与下载等便捷功能,方便您进行后续的维护与管理。

原文阅读:魔乐空间创建体验再上新台阶,多种模型助您快速生成可运行的空间

在这里插入图片描述

三、模型精度测试支持在NPU上执行文本生成任务的推理测试

用户可以通过上传自定义的基线输入来评估模型性能。系统会自动运行测试,并将模型的输出与预设的基线输出进行详细比对,以确定测试结果是否符合预期标准。

注意:仅模型拥有者或模型所在组织下有写权限的成员可以提交模型精度测试申请和查看模型测试管理界面。

3.1 如何进行精度测试

(1) 选择目标模型,进入模型介绍页面。

(2) 在界面右侧的“模型测试 > 精度测试”区域,若该模型为首次精度测试则单击“立即测试”,若已进行过精度测试则单击“再次测试”进入模型精度测试界面。

在这里插入图片描述

(3) 在弹出的“模型精度测试”框中,选择表单信息后单击“确认”。

在这里插入图片描述

注意:每个测试任务必须关联一个已创建的测试基线,若不存在已创建的基线,请参考新建基线进行创建。

(4) 等待模型精度测试用例执行完成。

(5) (可选) 当模型处于“测试中”时,用户可以单击“终止测试”,在弹出的对话框中单击“确认”手动停止测试。

在这里插入图片描述

(6) 当用例执行完成后,系统会在“精度测试”区域显示执行结果:

  • 当测试通过时,则会提供镜像下载链接,当测试时代码运行失败,只提供日志下载。
  • 若为非基线运行的精度测试,可以单击“查看结果”,查看精度测试详情与本文下载。

同时,该精度测试结果、终止原因等状态会通过消息中心的系统消息同步给用户。

在这里插入图片描述

3.2 基线管理

在进行模型精度测试时,为了方便操作,用户可以在基线管理界面创建或删除基线数据,确保每次测试时都能基于最新、最准确的标准进行。

若没有已建立的基线,可在进行精度测试,选择基线时,单击“前往创建”,建立新的基线。

3.3 新建基线

在目标模型的介绍页面,选择“模型测试管理 > 基线管理”,单击“新建基线”,在弹出的对话框中,填写表单信息并确认。

在这里插入图片描述

  • 基线类型:设置的基线类型,目前只支持推理类型。
  • 基线名称:新建基线的名称,仅包含字母、数字、下划线(_)或中划线(-)且长度为1-32个字符。
  • 任务类型:新建基线的任务类型,仅支持文本生成。
  • 输入文件:单击“上传文件”,选择大小不能超过2MB的txt文件上传输入文件。
  • 输出文件:单击“上传文件”,选择大小不能超过2MB的txt文件上传输出文件。
  • Metric:评估指标,目前支持的文生文推理任务只支持BLUE。
  • 阈值:评估阈值,目前固定为0.75。
3.4 删除基线

在目标模型的介绍页面,选择“模型测试管理 > 基线管理”,在基线列表选择要删除的基线数据,单击“操作”下方的删除按钮,删除基线数据。

在这里插入图片描述


以上便是对新版本的解读,欢迎大家体验! 如您在体验过程中遇到任何问题或建议,欢迎访问魔乐社区的帮助中心进行反馈(gitee.com/modelers/fe…)。 输入文件。