Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add open_clip and timm doc #30

Merged
merged 4 commits into from
Jul 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added _static/images/wenet.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
34 changes: 28 additions & 6 deletions index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@
sources/accelerate/index.rst
sources/transformers/index.rst
sources/onnxruntime/index.rst
sources/open_clip/index.rst
sources/timm/index.rst
sources/Diffusers/index.rst
sources/opencv/index.rst

.. warning::

Expand Down Expand Up @@ -120,11 +124,11 @@
</div>
<div class="flex-grow"></div>
<div class="flex space-x-4 text-blue-600">
<a href="#">官方链接</a>
<a href="https://github.com/opencv/opencv">官方链接</a>
<span class="split">|</span>
<a href="#">安装指南</a>
<a href="sources/opencv/install.html">安装指南</a>
<span class="split">|</span>
<a href="#">快速上手</a>
<a href="sources/opencv/quick_start.html">快速上手</a>
</div>
</div>
<!-- Card 6 -->
Expand Down Expand Up @@ -175,11 +179,11 @@
</div>
<div class="flex-grow"></div>
<div class="flex space-x-4 text-blue-600">
<a href="#">官方链接</a>
<a href="https://github.com/huggingface/diffusers">官方链接</a>
<span class="split">|</span>
<a href="#">安装指南</a>
<a href="sources/Diffusers/install.html">安装指南</a>
<span class="split">|</span>
<a href="#">快速上手</a>
<a href="sources/Diffusers/quick_start.html">快速上手</a>
</div>
</div>
<!-- Card 9 -->
Expand All @@ -200,5 +204,23 @@
<a href="sources/accelerate/quick_start.html">快速上手</a>
</div>
</div>
<!-- Card 10 -->
<div class="box rounded-lg p-4 flex flex-col items-center">
<div class="flex items-center mb-4">
<div class="img w-16 h-16 rounded-md mr-4" style="background-image: url('_static/images/wenet.png')"></div>
<div>
<h2 class="text-lg font-semibold">WeNet</h2>
<p class="text-gray-600 desc">端到端的语音识别工具包</p>
</div>
</div>
<div class="flex-grow"></div>
<div class="flex space-x-4 text-blue-600">
<a href="https://github.com/wenet-e2e/wenet">官方链接</a>
<span class="split">|</span>
<a href="#">安装指南</a>
<span class="split">|</span>
<a href="#">快速上手</a>
</div>
</div>
</div>
</div>
8 changes: 8 additions & 0 deletions sources/Diffusers/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Diffusers
===========

.. toctree::
:maxdepth: 2

install.rst
quick_start.rst
52 changes: 52 additions & 0 deletions sources/Diffusers/install.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
安装指南
==============

本教程面向使用 Diffusers & 昇腾开发者,帮助完成昇腾环境下 Diffusers 的安装。

昇腾环境安装
------------

请根据已有昇腾产品型号及CPU架构等按照 :doc:`快速安装昇腾环境指引 <../ascend/quick_install>` 进行昇腾环境安装,或直接获取对应产品的昇腾环境镜像 `cosdt/cann <https://hub.docker.com/r/cosdt/cann/tags>`_ 。

.. warning::
CANN 最低版本为 8.0.rc1,安装 CANN 时,请同时安装 Kernel 算子包。

Diffusers 安装
------------------

Python 环境创建
------------------

.. code-block:: shell
:linenos:

# 创建名为 diffusers 的 python 3.10 的虚拟环境
conda create -n diffusers python=3.10
# 激活虚拟环境
conda activate diffusers


pip 安装
------------------

通过以下指令安装 Diffusers 及 torch-npu:

.. code-block:: shell
:linenos:

pip install diffusers torch==2.2.0 torch-npu==2.2.0 torchvision


安装校验
------------------

执行以下代码,若无任何报错,仅打印模型下载过程,即说明安装成功:

.. code-block:: python
:linenos:

from diffusers import DiffusionPipeline
import torch

pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16)
pipeline.to("npu")
99 changes: 99 additions & 0 deletions sources/Diffusers/quick_start.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
快速开始
==================

本示例以文生图 Diffusers 库中文生图任务为样例,展示如何进行文生图模型 stable-diffusion-xl-base-1.0 的基于 LoRA 的微调及动态合并 LoRA 的推理。

文生图
-------------

.. _download:

模型及数据集下载
~~~~~~~~~~~~~~~~~~~~

1. 请提前下载 `stabilityai/stable-diffusion-xl-base-1.0 <https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0>`_ 模型至自定义路径

2. 请提前下载 `madebyollin/sdxl-vae-fp16-fix <https://huggingface.co/madebyollin/sdxl-vae-fp16-fix>`_ 模型至自定义路径

3. 请提前下载 `reach-vb/pokemon-blip-captions <https://huggingface.co/datasets/reach-vb/pokemon-blip-captions>`_ 数据集至自定义路径


.. _finetune:

基于 LoRA 的微调
~~~~~~~~~~~~~~~~~~~~

进入 Diffusers 项目目录,新建并执行以下脚本:

.. note::

请根据 :ref:`download` 中模型及数据集的实际缓存路径指定 stable-diffusion-xl-base-1.0 模型缓存路径 ``MODEL_NAME``,sdxl-vae-fp16-fix 模型缓存路径 ``VAE_NAME`` 和。

.. code-block:: shell
:linenos:
:emphasize-lines: 1,2,3

export MODEL_NAME="./models_ckpt/stable-diffusion-xl-base-1.0/"
export VAE_NAME="./ckpt/sdxl-vae-fp16-fix"
export TRAIN_DIR="~/diffusers/data/pokemon-blip-captions/pokemon"

python3 ./examples/text_to_image/train_text_to_image_lora_sdxl.py \
--pretrained_model_name_or_path=$MODEL_NAME \
--pretrained_vae_model_name_or_path=$VAE_NAME \
--dataset_name=$DATASET_NAME --caption_column="text" \
--resolution=1024 \
--random_flip \
--train_batch_size=1 \
--num_train_epochs=2 \
--checkpointing_steps=500 \
--learning_rate=1e-04 \
--lr_scheduler="constant" \
--lr_warmup_steps=0 \
--mixed_precision="no" \
--seed=42 \
--output_dir="sd-pokemon-model-lora-sdxl" \
--validation_prompt="cute dragon creature"

微调过程无报错,并且终端显示 ``Steps: 100%`` 的进度条说明微调成功。


动态合并 LoRA 的推理
~~~~~~~~~~~~~~~~~~~~

.. note::

请根据 :ref:`download` 中模型实际缓存路径指定 ``model_path``

根据 :ref:`finetune` 中指定的 LoRA 模型路径 ``output_dir`` 指定 ``lora_model_path``

[可选] 修改 ``prompt`` 可使得生成图像改变

.. code-block:: python
:linenos:
:emphasize-lines: 9

from diffusers import DiffusionPipeline
import torch

lora_model_path = "path/to/sd-pokemon-model-lora-sdxl/checkpoint-800/"
model_path = "./models_ckpt/stable-diffusion-xl-base-1.0/"
pipe = DiffusionPipeline.from_pretrained(model_path, torch_dtype=torch.float16)

# 将模型放到 NPU 上
pipe.to("npu")

# 加载 LoRA 权重
pipe.load_lora_weights(lora_model_path)
# 输入 prompt
prompt = "Sylveon Pokemon with elegant features, magical design, \
light purple aura, extremely detailed and intricate markings, \
photo realistic, unreal engine, octane render"
# 推理
image = pipe(prompt, num_inference_steps=30, guidance_scale=7.5).images[0]

image.save("pokemon-finetuned-inference-generation.png")


微调过程无报错,并且终端显示 ``Loading pipeline components...: 100%`` 的进度条说明微调成功。
查看当前目录下保存的 ``pokemon-finetuned-inference-generation.png`` 图像,可根据 ``prompt`` 生成内容相关的图像说明推理成功。

Binary file added sources/open_clip/images/CLIP.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions sources/open_clip/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
open_clip
===========

.. toctree::
:maxdepth: 2

install.rst
quick_start.rst
70 changes: 70 additions & 0 deletions sources/open_clip/install.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
安装指南
==============

本教程面向使用 open_clip & 昇腾的开发者,帮助完成昇腾环境下 open_clip 的安装。

昇腾环境安装
------------

请根据已有昇腾产品型号及CPU架构等按照 :doc:`快速安装昇腾环境指引 <../ascend/quick_install>` 进行昇腾环境安装。

.. warning::
CANN 最低版本为 8.0.rc1,安装 CANN 时,请同时安装 Kernel 算子包。

Python 环境创建
----------------------

.. code-block:: shell
:linenos:

# 创建 python 3.10 的虚拟环境
conda create -n <your_env_name> python=3.10
# 激活虚拟环境
conda activate <your_env_name>


open_clip 安装
----------------------

使用以下指令安装 open_clip:

.. code-block:: shell
:linenos:

pip install open-clip-torch

torch-npu 安装
----------------------

按照 :doc:`torch-npu 安装指引 <../pytorch/install>` 安装 2.2.0 版本 torch 和 torch-npu,或使用以下指令快速安装:

.. code-block:: shell
:linenos:

# install the dependencies
pip3 install attrs numpy==1.26.4 decorator sympy cffi pyyaml pathlib2 psutil protobuf scipy requests absl-py wheel typing_extensions
# install torch and torch-npu
pip install torch==2.2.0 torch-npu==2.2.0

安装校验
----------------------

使用以下 Python 脚本对 open_clip 的安装进行校验,正确打印 open_clip 的版本号和 NPU 卡号说明安装成功。

.. code-block:: python
:linenos:
:emphasize-lines: 2

import torch
import torch_npu
import open_clip

print("open_cliop version: ", clip.version.__version__)
print("NPU devices: ", torch.npu.current_device())

正确回显如下(单卡 NPU 环境):

.. code-block:: shell

open_cliop version: 2.24.0
NPU devices: 0
Loading