Может Видеть Введение к предыдущим статьям:Обучение AIGC с открытым исходным кодом — локальное выполнение графовой модели Винсента.
1. Адрес модели
Видетьhuggingface,https://huggingface.co/cerspense/zerscope_v2_576w
2. Загрузите и скопируйте модель.
pipe = DiffusionPipeline.from_pretrained("cerspense/zeroscope_v2_576w", torch_dtype=torch.float16)
Это то же самое, что и snapshot_download, оба находятся в текущем пути user.cache.
# cp -r .cache/huggingface/hub/models--cerspense--zeroscope_v2_576w /mnt/d/aigc_model/hub/
Персональный компьютер может быть путем к локальному диску.,В реальной среде скопируйте автоматически загруженную модель на адрес монтирования (распределенного NAS).,Есть разница между кодом модели, считанным с адреса nas, и локальным путем в коде python.
import torch
from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler
from diffusers.utils import export_to_video
pipe = DiffusionPipeline.from_pretrained("/mnt/d/aigc_model/hub/models--cerspense--zeroscope_v2_576w/snapshots/6963642a64dbefa93663d1ecebb4ceda2d9ecb28", torch_dtype=torch.float16)
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
pipe.enable_model_cpu_offload()
prompt = "Darth Vader is surfing on waves"
video_frames = pipe(prompt, num_inference_steps=10, height=320, width=576, num_frames=24).frames
video_path = export_to_video(video_frames)
Здесь сообщается об исключении. Информация об исключении — GPU OOM.
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 2.11 GiB. GPU 0 has a total capacity of 8.00 GiB of which 147.00 MiB is free.
Including non-PyTorch memory, this process has 17179869184.00 GiB memory in use. Of the allocated memory 5.04 GiB is allocated by PyTorch, and 631.85 MiB is reserved by PyTorch but unallocated.
If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation.
See documentation for Memory Management (https://pytorch.org/docs/stable/notes/cuda.html#environment-variables)
Соответствующее решение — установить PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
>>> import torch
>>> torch.cuda.device_count()
1
>>> torch.cuda.get_device_name(0)
'NVIDIA GeForce RTX 4060 Laptop GPU'
import os
# os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "max_split_size_mb:4000"
os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "expandable_segments:True"
Этот метод настройки эффективен при запуске кода Python в настоящее время и будет работать нормально при повторном запуске кода Python.
prompt = "A beautiful woman running on the beach"
video_frames = pipe(prompt, num_inference_steps=10, height=320, width=576, num_frames=24).frames
video_path = export_to_video(video_frames)
# Просмотр текущего сгенерированного пути видео
print(video_path)
Отображение эффекта очень среднее.,в естественности、Гораздо менее последовательный。Заменить другим алгоритмом видео Винсента.ali-vilab/text-to-video-ms-1.7b
import torch
from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler
from diffusers.utils import export_to_video
pipe = DiffusionPipeline.from_pretrained("/mnt/d/aigc_model/hub/models--damo-vilab--text-to-video-ms-1.7b/snapshots/8227dddca75a8561bf858d604cc5dae52b954d01", torch_dtype=torch.float16, variant="fp16")
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
pipe.to("cuda")
# pipe.enable_model_cpu_offload()
prompt = "A beautiful woman running on the beach"
video_frames = pipe(prompt, num_inference_steps=25).frames
video_path = export_to_video(video_frames)
print(video_path)
video_path = export_to_video(video_frames, "/mnt/d/result.mp4")
# Сохранить указанное местоположение
Более эффективно, чем раньшеzeroscope_v2_576wМодель лучше。