Diffusers documentation
LongCat-AudioDiT
LongCat-AudioDiT
LongCat-AudioDiT는 Meituan LongCat의 텍스트-오디오 확산 모델입니다. diffusers 통합은 텍스트 조건부 오디오 생성을 위한 표준 DiffusionPipeline 인터페이스를 제공합니다.
이 파이프라인은 LongCat-AudioDiT 참조 구현에서 수정되었습니다: https://github.com/meituan-longcat/LongCat-AudioDiT
이 파이프라인은 diffusers 형식(즉, text_encoder/, transformer/, vae/, tokenizer/, scheduler/ 하위 폴더를 포함하는 형식)의 로컬 디렉터리 또는 Hugging Face Hub 저장소에서 로드하는 것을 지원합니다.
사용
import soundfile as sf
import torch
from diffusers import LongCatAudioDiTPipeline
pipeline = LongCatAudioDiTPipeline.from_pretrained(
"ruixiangma/LongCat-AudioDiT-1B-Diffusers",
dtype=torch.float16,
)
pipeline = pipeline.to("cuda") # or "mps", "xpu", "cpu"
prompt = "A calm ocean wave ambience with soft wind in the background."
audio = pipeline(
prompt,
audio_duration_s=5.0,
num_inference_steps=16,
guidance_scale=4.0,
generator=torch.Generator("cuda").manual_seed(42),
).audios[0, 0]
sf.write("longcat.wav", audio, pipeline.sample_rate)팁
audio_duration_s은 출력 길이를 제어하는 가장 직접적인 방법입니다.- 생성을 재현 가능하게 하려면
generator=torch.Generator("cuda").manual_seed(42)를 사용하세요. - 출력 형상은
(batch, channels, samples)입니다 -.audios[0, 0]을 사용하여 단일 오디오 샘플을 가져올 수 있습니다. - pipeline은 모노 오디오(1채널)를 출력합니다. 스테레오가 필요하면 채널을 복제할 수 있습니다:
audio.unsqueeze(0).repeat(1, 2, 1).
LongCatAudioDiTPipeline
클래스 diffusers.LongCatAudioDiTPipeline
< source >( vae: LongCatAudioDiTVaetext_encoder: UMT5EncoderModeltokenizer: PreTrainedTokenizerBasetransformer: LongCatAudioDiTTransformerscheduler: diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler | None = None )
__call__
< source >( prompt: str | list[str]negative_prompt: str | list[str] | None = Noneaudio_duration_s: float | None = Nonelatents: typing.Optional[torch.Tensor] = Nonenum_inference_steps: int = 16guidance_scale: float = 4.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Noneoutput_type: str = 'np'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] ) → AudioPipelineOutput or tuple
매개변수
- prompt (
str또는list[str]) — 오디오 생성을 안내하는 프롬프트 또는 프롬프트 목록. - negative_prompt (
str또는list[str], 선택 사항) — classifier-free guidance를 위한 negative prompt입니다. - audio_duration_s (
float, 선택 사항) — 초 단위의 목표 오디오 길이입니다.latents가 제공되면 무시됩니다. - latents (
torch.Tensor, 선택 사항) —(batch_size, duration, latent_dim)모양의 사전 생성된 노이즈된 latents입니다. - num_inference_steps (
int, 기본값 16) — 디노이징 단계 수. - guidance_scale (
float, 기본값 4.0) — classifier-free guidance의 guidance scale입니다. - generator (
torch.Generator또는list[torch.Generator], 선택 사항) — 랜덤 생성기입니다. - output_type (
str, 기본값"np") — 출력 형식:"np","pt"또는"latent". - return_dict (
bool, 기본값True) —AudioPipelineOutput를 반환할지 여부. - callback_on_step_end (
Callable, 선택 사항) —callback_on_step_end_tensor_inputs로 지정된 텐서 입력과 함께 파이프라인, 스텝 인덱스, 타임스텝을 인수로 받아 각 디노이징 스텝의 끝에서 호출되는 함수입니다. - callback_on_step_end_tensor_inputs (
list, 기본값["latents"]) —callback_on_step_end에 전달되는 텐서 입력입니다.
반환값
AudioPipelineOutput 또는 tuple
return_dict가 True인 경우 AudioPipelineOutput, 그렇지 않으면 tuple입니다. tuple을 반환할 때 첫 번째 요소는 생성된 오디오 웨이브폼입니다.
생성을 위해 파이프라인을 호출할 때 호출되는 함수.
예:
>>> import soundfile as sf
>>> import torch
>>> from diffusers import LongCatAudioDiTPipeline
>>> pipe = LongCatAudioDiTPipeline.from_pretrained("ruixiangma/LongCat-AudioDiT-1B-Diffusers")
>>> pipe.to("cuda")
>>> prompt = "A calm ocean wave ambience with soft wind in the background."
>>> audio = pipe(
... prompt,
... audio_duration_s=5.0,
... num_inference_steps=20,
... guidance_scale=4.0,
... generator=torch.Generator("cuda").manual_seed(42),
... ).audios[0, 0]
>>> sf.write("output.wav", audio, pipe.sample_rate)from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike**kwargs )
매개변수
- pretrained_model_name_or_path (
str또는os.PathLike, 선택 사항) — 다음 중 하나일 수 있습니다:- Hub에 호스팅된 사전 학습된 파이프라인의 repo id(예:
CompVis/ldm-text2im-large-256) 문자열 - save_pretrained()를 사용하여 저장된 파이프라인 가중치가 포함된 디렉터리의 경로(예:
./my_pipeline_directory/)
- Hub에 호스팅된 사전 학습된 파이프라인의 repo id(예:
- dtype (
torch.dtype또는dict[str, Union[str, torch.dtype]], 선택 사항) — 기본torch.dtype를 재정의하여 다른 dtype로 모델을 로드합니다. 서브모델을 서로 다른 dtype로 로드하려면dict를 전달합니다(예:{'transformer': torch.bfloat16, 'vae': torch.float16}). 지정되지 않은 구성 요소의 기본 dtype는default로 설정합니다(예:{'transformer': torch.bfloat16, 'default': torch.float16}). 구성 요소가 지정되지 않았고 기본값도 설정되지 않은 경우,torch.float32가 사용됩니다. - custom_pipeline (
str, 선택 사항) —> 🧪 이는 실험적 기능이며 향후 변경될 수 있습니다.
다음 중 하나일 수 있습니다:
- Hub에 호스팅된 커스텀 파이프라인의 repo id(예:
hf-internal-testing/diffusers-dummy-pipeline)를 나타내는 문자열입니다. 저장소에는 커스텀 파이프라인을 정의하는 pipeline.py 파일이 포함되어야 합니다. - 문자열이며, GitHub의 Community 아래에 호스팅된 커뮤니티 파이프라인의 파일 이름입니다. 유효한 파일 이름은 파이프라인 스크립트가 아닌 파일 이름과 일치해야 합니다(
clip_guided_stable_diffusion.py가 아닌clip_guided_stable_diffusion). 커뮤니티 파이프라인은 항상 GitHub의 현재 main 브랜치에서 로드됩니다. - 커스텀 파이프라인이 포함된 디렉터리(
./my_pipeline_directory/)의 경로입니다. 해당 디렉터리에는 커스텀 파이프라인을 정의하는pipeline.py파일이 포함되어 있어야 합니다.
커스텀 파이프라인을 로드하고 만드는 방법에 대한 자세한 내용은 커스텀 파이프라인 로드 및 추가를 참고하세요.
- Hub에 호스팅된 커스텀 파이프라인의 repo id(예:
- force_download (
bool, 선택 사항, 기본값False) — 모델 가중치 및 구성 파일의 (재)다운로드를 강제할지 여부입니다. 캐시된 버전이 존재하는 경우 이를 무시합니다. - cache_dir (
Union[str, os.PathLike], 선택) — 표준 캐시를 사용하지 않을 경우, 다운로드된 사전 학습 모델 구성이 캐시되는 디렉터리의 경로입니다. - proxies (
Dict[str, str], 선택) — 프로토콜 또는 엔드포인트별로 사용할 프록시 서버의 사전입니다. 예를 들어,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}와 같습니다. 각 요청 시 프록시가 사용됩니다. - output_loading_info(
bool, optional, 기본값False) — 누락된 키, 예상치 못한 키 및 오류 메시지를 포함하는 사전도 함께 반환할지 여부. - local_files_only (
bool, 선택 사항, 기본값False) — 로컬 모델 가중치 및 구성 파일만 로드할지 여부를 지정합니다.True로 설정하면 Hub에서 모델을 다운로드하지 않습니다. - token (
str또는 bool, 선택 사항) — 원격 파일에 대한 HTTP bearer 인증으로 사용할 토큰입니다.True인 경우,diffusers-cli login에서 생성된 토큰(~/.huggingface에 저장됨)이 사용됩니다. - revision (
str, 선택 사항, 기본값"main") — 사용할 특정 모델 버전입니다. Git에서 허용하는 브랜치 이름, 태그 이름, 커밋 ID 또는 기타 식별자일 수 있습니다. - custom_revision (
str, 선택 사항) — 사용할 특정 모델 버전입니다. Hub에서 커스텀 파이프라인을 로드할 때revision과 유사하게 브랜치 이름, 태그 이름 또는 커밋 ID를 사용할 수 있습니다. 기본값은 최신 안정 버전의 🤗 Diffusers입니다. - mirror (
str, 선택 사항) — 중국에서 모델을 다운로드할 때 접근성 문제를 해결하기 위한 미러 소스입니다. 소스의 적시성이나 안전성을 보장하지 않으며, 자세한 정보는 해당 미러 사이트를 참고하세요. - device_map (
str, 선택 사항) — pipeline의 각 구성 요소를 사용 가능한 장치에 배치하는 방식을 결정하는 전략입니다. 현재 “balanced”device_map만 지원됩니다. 자세한 내용은 여기를 참고하세요. - max_memory (
Dict, 선택 사항) — 최대 메모리에 대한 디바이스 식별자를 나타내는 사전입니다. 설정되지 않으면 각 GPU의 사용 가능한 최대 메모리와 사용 가능한 CPU RAM이 기본값으로 사용됩니다. - offload_folder (
str또는os.PathLike, 선택 사항) —"disk"값을 포함하는 device_map의 경우, 가중치를 오프로드할 경로입니다. - offload_state_dict (
bool, 선택 사항) —True인 경우, CPU state dict의 가중치와 체크포인트의 가장 큰 샤드가 함께 CPU RAM에 맞지 않을 때 RAM 부족을 방지하기 위해 CPU state dict를 임시로 하드 드라이브로 오프로드합니다. 디스크 오프로드가 있는 경우 기본값은True입니다. - low_cpu_mem_usage (
bool, 선택 사항, torch 버전이 1.9.0 이상이면 기본값은True, 그 외에는False) — 가중치를 초기화하지 않고 사전 학습된 가중치만 로드하여 모델 로딩 속도를 높입니다. 또한 모델 로딩 중 CPU 메모리(피크 메모리 포함)를 모델 크기의 1배를 초과하지 않도록 시도합니다. PyTorch 1.9.0 이상에서만 지원됩니다. PyTorch의 이전 버전을 사용하는 경우 이 인수를True로 설정하면 오류가 발생합니다. - use_safetensors (
bool, 선택 사항, 기본값None) —None으로 설정하면, safetensors 가중치가 사용 가능하고 그리고 safetensors 라이브러리가 설치된 경우에만 safetensors 가중치가 다운로드됩니다.True로 설정하면 모델이 safetensors 가중치에서 강제 로드됩니다.False로 설정하면 safetensors 가중치가 로드되지 않습니다. - use_onnx (
bool, 선택 사항, 기본값None) —True로 설정하면 ONNX 가중치가 존재하는 경우 항상 다운로드됩니다.False로 설정하면 ONNX 가중치는 절대 다운로드되지 않습니다. 기본적으로use_onnx는_is_onnx클래스 속성의 기본값을 따르며, 이는 ONNX가 아닌 파이프라인의 경우False, ONNX 파이프라인의 경우True입니다. ONNX 가중치에는.onnx및.pb로 끝나는 두 가지 파일이 모두 포함됩니다. - kwargs (나머지 키워드 인자 사전, 선택 사항) —
특정 파이프라인 클래스의 파이프라인 구성 요소인 로드 및 저장 가능 변수를 덮어쓸 수 있습니다. 덮어쓴 구성 요소는 파이프라인의
__init__메서드에 직접 전달됩니다. 자세한 내용은 아래 예시를 참조하세요. - variant (
str, 선택 사항) —"fp16"또는"ema"와 같이 지정된 variant 파일 이름에서 가중치를 로드합니다. - disable_mmap (‘bool’, 선택 사항, 기본값 ‘False’) — Safetensors 모델을 로드할 때 mmap을 비활성화할지 여부입니다. 네트워크 마운트나 하드 드라이브에 모델이 있는 경우 mmap의 seek 동작을 잘 처리하지 못할 수 있으므로, 이 옵션을 사용하면 성능이 더 좋아질 수 있습니다.
PyTorch 확산 파이프라인을 사전 학습된 파이프라인 가중치에서 초기화합니다.
파이프라인은 기본적으로 평가 모드(model.eval())로 설정됩니다.
아래와 같은 오류 메시지가 표시되면 다운스트림 작업을 위해 가중치를 미세 조정해야 합니다:
Some weights of UNet2DConditionModel were not initialized from the model checkpoint at stable-diffusion-v1-5/stable-diffusion-v1-5 and are newly initialized because the shapes did not match:
- conv_in.weight: found shape torch.Size([320, 4, 3, 3]) in the checkpoint and torch.Size([320, 9, 3, 3]) in the model instantiated
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.> 비공개 또는 게이트된 모델을 사용하려면
hf > auth login으로 로그인하세요.
예:
>>> from diffusers import DiffusionPipeline
>>> # Download pipeline from huggingface.co and cache.
>>> pipeline = DiffusionPipeline.from_pretrained("CompVis/ldm-text2im-large-256")
>>> # Download pipeline that requires an authorization token
>>> # For more information on access tokens, please refer to this section
>>> # of the documentation](https://huggingface.co/docs/hub/security-tokens)
>>> pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")
>>> # Use a different scheduler
>>> from diffusers import LMSDiscreteScheduler
>>> scheduler = LMSDiscreteScheduler.from_config(pipeline.scheduler.config)
>>> pipeline.scheduler = scheduler