动手实践 (第二部分)
现在轮到您托管自己的演示了!在本部分中,您将
- 使用您自己的模型重新运行笔记本。
- 使用 Gradio 创建演示。
- (可选) 部署您的演示。
重新运行笔记本
在笔记本中,将模型名称替换为您自己的模型名称
import torch
from diffusers import DiffusionPipeline
multi_view_diffusion_pipeline = DiffusionPipeline.from_pretrained(
"<your-user-name>/<your-model-name>",
custom_pipeline="dylanebert/multi-view-diffusion",
torch_dtype=torch.float16,
trust_remote_code=True,
).to("cuda")
然后,重新运行笔记本。您应该会看到与之前相同的结果。
Gradio 演示
现在,让我们创建一个 Gradio 演示
import gradio as gr
def run(image):
image = np.array(image, dtype=np.float32) / 255.0
images = multi_view_diffusion_pipeline("", image, guidance_scale=5, num_inference_steps=30, elevation=0)
images = [Image.fromarray((img * 255).astype("uint8")) for img in images]
width, height = images[0].size
grid_img = Image.new("RGB", (2 * width, 2 * height))
grid_img.paste(images[0], (0, 0))
grid_img.paste(images[1], (width, 0))
grid_img.paste(images[2], (0, height))
grid_img.paste(images[3], (width, height))
return grid_img
demo = gr.Interface(fn=run, inputs="image", outputs="image")
demo.launch()
run
方法将前面所有代码组合到一个函数中。然后,gr.Interface
方法使用此函数使用 image
输入和 image
输出创建一个演示。
恭喜!您已为您的模型创建了一个 Gradio 演示。
(可选) 部署您的演示
您可能希望在 Colab 之外运行您的演示。
有很多方法可以做到这一点
选项 1:创建 Space
访问 Hugging Face Spaces 并创建一个新的 Space。选择 Gradio Space SDK
。在 Space 中创建一个名为 app.py
的新文件,并将 Gradio 演示中的代码粘贴到其中。将演示的 requirements.txt 复制到 Space 中。
有关完整示例,请查看此 Space,然后点击右上角的 Files
以查看源代码。
注意:此方法需要 GPU 来公开托管,这需要付费。但是,您可以按照 选项 3 中的说明免费在本地运行演示。
选项 2:Gradio 部署
Gradio 使用 gradio deploy
命令简化了将您的演示部署到服务器的过程。
有关更多详细信息,请查看 Gradio 文档。
选项 3:在本地运行
要在本地运行,只需将代码复制到 Python 文件中并在您的机器上运行即可。
完整源文件应如下所示
import gradio as gr
import numpy as np
import torch
from diffusers import DiffusionPipeline
from PIL import Image
multi_view_diffusion_pipeline = DiffusionPipeline.from_pretrained(
"dylanebert/multi-view-diffusion",
custom_pipeline="dylanebert/multi-view-diffusion",
torch_dtype=torch.float16,
trust_remote_code=True,
).to("cuda")
def run(image):
image = np.array(image, dtype=np.float32) / 255.0
images = multi_view_diffusion_pipeline(
"", image, guidance_scale=5, num_inference_steps=30, elevation=0
)
images = [Image.fromarray((img * 255).astype("uint8")) for img in images]
width, height = images[0].size
grid_img = Image.new("RGB", (2 * width, 2 * height))
grid_img.paste(images[0], (0, 0))
grid_img.paste(images[1], (width, 0))
grid_img.paste(images[2], (0, height))
grid_img.paste(images[3], (width, height))
return grid_img
demo = gr.Interface(fn=run, inputs="image", outputs="image")
demo.launch()
要在虚拟 Python 环境中设置和运行此演示,请运行以下命令
# Setup
python -m venv venv
source venv/bin/activate
pip install -r https://huggingface.co/spaces/dylanebert/multi-view-diffusion/raw/main/requirements.txt
# Run
python app.py
< > 更新 在 GitHub 上注意:这已在使用 Python 3.10.12 和 CUDA 12.1 的 NVIDIA RTX 4090 上进行了测试。