Qwen2.5-Omni-7B: 궁극적인 엔드 투 엔드 멀티모달 AI 모델

💡최신 AI 트렌드에 관심이 있으신가요? 그렇다면 Anakin AI를 놓치지 마세요! Anakin AI는 모든 워크플로 자동화를 위한 올인원 플랫폼으로, 사용하기 쉬운 노코드 앱 빌더를 통해 강력한 AI 앱을 만들 수 있으며, Deepseek, OpenAI의 o3-mini-high, Claude 3.7 Sonnet, FLUX, Minimax Video, Hunyuan 등을 포함합니다... Anakin AI로 몇 주가 아닌 몇 분

Build APIs Faster & Together in Apidog

Qwen2.5-Omni-7B: 궁극적인 엔드 투 엔드 멀티모달 AI 모델

Start for free
Inhalte
💡
최신 AI 트렌드에 관심이 있으신가요?

그렇다면 Anakin AI를 놓치지 마세요!

Anakin AI는 모든 워크플로 자동화를 위한 올인원 플랫폼으로, 사용하기 쉬운 노코드 앱 빌더를 통해 강력한 AI 앱을 만들 수 있으며, Deepseek, OpenAI의 o3-mini-high, Claude 3.7 Sonnet, FLUX, Minimax Video, Hunyuan 등을 포함합니다...

Anakin AI로 몇 주가 아닌 몇 분 안에 당신의 꿈의 AI 앱을 만들어 보세요!
Anakin AI: Your All-in-One AI Platform
Anakin AI: 당신의 올인원 AI 플랫폼

소개

Qwen2.5-Omni-7B는 Alibaba Cloud의 Qwen 팀에서 개발한 최신 멀티모달 AI 기술의 혁신을 나타냅니다. Qwen2.5 시리즈의 일환으로 출시된 이 7B 매개변수 모델은 텍스트, 이미지, 오디오 및 비디오를 포함한 다양한 입력 모달리티를 인식하고 처리할 수 있으며, 동시에 스트리밍 방식으로 텍스트와 자연어 응답을 생성하는 종단 간 멀티모달 기능에서 중요한 발전을 의미합니다.

Qwen2.5-Omni-7B의 차별점은 모든 모달리티에서 뛰어난 다재다능성과 성능을 제공하여 다양한 AI 응용 프로그램을 위한 진정한 "옴니" 모델이 되었다는 점입니다. 이 모델은 음성, 비전 및 텍스트를 동시에 처리할 수 있는 능력을 갖추고 있어 현재 사용 가능한 가장 발전된 오픈소스 멀티모달 모델 중 하나입니다.

주요 기능 및 능력

혁신적인 Thinker-Talker 아키텍처

Qwen2.5-Omni-7B의 핵심에는 포괄적인 멀티모달 인식을 위한 혁신적인 Thinker-Talker 아키텍처가 자리하고 있습니다. 이 아키텍처는 모델이 다음과 같은 작업을 수행할 수 있게 합니다:

  • 다양한 입력 모달리티를 동시에 처리
  • 텍스트와 음성 출력을 모두 생성
  • 실시간으로 스트리밍 응답 제공

이 아키텍처에는 비디오 입력의 타임스탬프를 오디오와 동기화하여 보다 일관된 멀티모달 이해를 가능하게 하는 새로운 위치 임베딩 시스템인 TMRoPE(시간 정렬 멀티모달 RoPE)가 포함되어 있습니다.

실시간 음성 및 비디오 채팅

이 모델은 완전 실시간 상호작용을 위해 구축되었으며, 청크 입력 처리를 지원하고 즉각적인 출력 생성을 가능하게 합니다. 이러한 기능은 가상 비서 및 인터랙티브 시스템과 같은 자연스러운 대화 흐름이 필요한 애플리케이션에 매우 중요합니다.

자연스러운 강력한 음성 생성

Qwen2.5-Omni-7B는 많은 기존 스트리밍 및 비스트리밍 대안에 비해 뛰어난 음성 생성 능력을 보여 줍니다. 모델의 음성 출력은 탁월한 강건성과 자연스러움으로 특징지어져 있어, 고품질 음성 출력이 필수적인 애플리케이션에 적합합니다.

강력한 크로스 모달 성능

Qwen2.5-Omni-7B는 비슷한 크기의 단일 모달 모델과 비교할 때 모든 모달리티에서 뛰어난 성능을 보입니다. 오디오 기능에서 유사한 크기의 Qwen2-Audio보다 성능이 뛰어나며, 비전-언어 작업에서 Qwen2.5-VL-7B와 유사한 성능을 달성하여 진정한 멀티모달 시스템으로서의 다재다능성을 보여줍니다.

탁월한 음성 지시 따름

Qwen2.5-Omni-7B의 가장 인상적인 측면 중 하나는 음성 입력을 통해 지시를 따르는 능력으로, 텍스트 입력 능력에 필적하는 성능을 보여줍니다. 이는 음성 입력을 제공받았을 때 MMLU 및 GSM8K와 같은 기준에서 뛰어난 성과를 보여 주며, 모델이 입력 모달리티에 관계없이 높은 인지 능력을 유지한다는 것을 나타냅니다.

기준 성능

Qwen2.5-Omni-7B는 여러 기준을 통해 포괄적인 평가를 받으며, 다양한 분야에서 꾸준히 강력한 성능을 보여줍니다:

멀티모달 기준

음성, 소리 이벤트 및 음악 이해에서 성능을 테스트하는 OmniBench에서:

  • Qwen2.5-Omni-7B: 평균 성능 56.13%
  • Gemini-1.5-Pro: 42.91%
  • Baichuan-Omni-1.5: 42.90%
  • MiniCPM-o: 40.50%

이는 Qwen2.5-Omni-7B가 비슷한 크기의 모델들 중 멀티모달 이해 작업에서 가장 뛰어난 성능을 나타낸다는 것을 의미합니다.

오디오 처리

LibriSpeech에서 음성 인식을 위해:

  • Qwen2.5-Omni-7B: test-clean에서 1.8 WER, test-other에서 3.4 WER
  • Qwen2-Audio: test-clean에서 1.6 WER, test-other에서 3.6 WER
  • Whisper-large-v3: test-clean에서 1.8 WER, test-other에서 3.6 WER

MMAU에서 오디오 이해를 위해:

  • Qwen2.5-Omni-7B: 65.60% (평균)
  • Gemini-Pro-V1.5: 54.90%
  • Qwen2-Audio: 49.20%

이미지 및 비디오 이해

이미지 이해 기준에서:

  • MMMU val: 59.2% (GPT-4o-mini의 60.0% 및 Qwen2.5-VL-7B의 58.6%와 비교)
  • MMBench-V1.1-EN test: 81.8% (Qwen2.5-VL-7B의 82.6% 및 GPT-4o-mini의 76.0%와 비교)

비디오 이해에 대해:

  • MVBench: 70.3% (Qwen2.5-VL-7B의 69.6%와 비교)
  • 자막 없는 Video-MME: 64.3% (Qwen2.5-VL-7B의 65.1%와 비교)

텍스트 전용 기준

멀티모달 모델임에도 불구하고 Qwen2.5-Omni-7B는 텍스트 전용 기준에서 강력한 성능을 유지합니다:

  • MMLU-redux: 71.0% (Qwen2.5-7B의 75.4%와 비교)
  • GSM8K: 88.7% (Qwen2.5-7B의 91.6%와 비교)
  • HumanEval: 78.7% (Qwen2.5-7B의 84.8%와 비교)

텍스트 전용 성능이 전문화된 텍스트 모델(Qwen2.5-7B)보다 다소 낮지만, Llama3.1-8B 및 Gemma2-9B와 같은 많은 유사 모델보다 훨씬 뛰어난 성과를 보입니다.

Qwen2.5-Omni-7B 로컬 실행하기

Qwen2.5-Omni-7B를 로컬에서 설정하고 실행하려면 멀티모달 요구 사항으로 인해 약간의 준비가 필요합니다. 시작하기 위한 종합 가이드는 다음과 같습니다:

시스템 요구 사항

Qwen2.5-Omni-7B를 효과적으로 실행하려면 다음이 필요합니다:

  • 충분한 메모리를 갖춘 CUDA 호환 GPU:
  • 15초 비디오: 31.11 GB (BF16)
  • 30초 비디오: 41.85 GB (BF16)
  • 60초 비디오: 60.19 GB (BF16)
  • 참고: 실제 메모리 사용량은 일반적으로 이론적 최소보다 1.2배 더 높습니다.
  • 소프트웨어 요구 사항:
  • Python 3.8+
  • PyTorch 2.0+
  • FFmpeg (오디오/비디오 처리용)

설치 단계

필요한 패키지 설치하기:

pip uninstall transformers
pip install git+https://github.com/huggingface/transformers@3a1ead0aabed473eafe527915eea8c197d424356
pip install accelerate
pip install qwen-omni-utils[decord]

Flash Attention 2 설치하기 (성능 향상을 위한 선택적 사항):

pip install -U flash-attn --no-build-isolation

기본 사용 예

아래는 Transformers와 함께 Qwen2.5-Omni-7B를 사용하는 기본 예시입니다:

import soundfile as sf
from transformers import Qwen2_5OmniModel, Qwen2_5OmniProcessor
from qwen_omni_utils import process_mm_info

# 모델 로드
model = Qwen2_5OmniModel.from_pretrained(
    "Qwen/Qwen2.5-Omni-7B",
    torch_dtype="auto",
    device_map="auto",
    # 호환 가능한 하드웨어에서 성능 향상을 위해 주석 해제
    # attn_implementation="flash_attention_2",
)

# 프로세서 로드
processor = Qwen2_5OmniProcessor.from_pretrained("Qwen/Qwen2.5-Omni-7B")

# 대화 준비
conversation = [
    {
        "role": "system",
        "content": "당신은 Qwen, Alibaba 그룹 Qwen 팀이 개발한 가상 인간으로, 청각 및 시각 입력을 인식하고 텍스트와 음성을 생성할 수 있습니다.",
    },
    {
        "role": "user",
        "content": [
            {"type": "video", "video": "<https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2.5-Omni/draw.mp4>"},
        ],
    },
]

# 추론 준비
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios, images, videos = process_mm_info(conversation, use_audio_in_video=True)
inputs = processor(
    text=text,
    audios=audios,
    images=images,
    videos=videos,
    return_tensors="pt",
    padding=True
)
inputs = inputs.to(model.device).to(model.dtype)

# 추론: 출력 텍스트 및 오디오 생성
text_ids, audio = model.generate(**inputs, use_audio_in_video=True)
text = processor.batch_decode(text_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)
print(text)

# 오디오 출력 저장
sf.write(
    "output.wav",
    audio.reshape(-1).detach().cpu().numpy(),
    samplerate=24000,
)

사용 팁

오디오 출력 요구 사항

오디오 출력을 활성화하려면 시스템 프롬프트가 정확히 다음과 같이 설정되어야 합니다:

{
    "role": "system",
    "content": "당신은 Qwen, Alibaba 그룹 Qwen 팀이 개발한 가상 인간으로, 청각 및 시각 입력을 인식하고 텍스트와 음성을 생성할 수 있습니다."
}

음성 유형 선택

Qwen2.5-Omni-7B는 두 가지 음성 유형을 지원합니다:

  • Chelsie (여성): 부드럽고 달콤한 음성으로 따뜻하고 맑은 음색
  • Ethan (남성): 밝고 경쾌한 음성으로 전염성 있는 에너지와 따뜻함

음성을 지정하려면 spk 매개변수를 사용할 수 있습니다:

text_ids, audio = model.generate(**inputs, spk="Ethan")

비디오 처리 옵션

비디오 URL 호환성은 서드파티 라이브러리 버전에 따라 다릅니다:

  • torchvision >= 0.19.0: HTTP 및 HTTPS 모두 지원
  • decord: HTTP만 지원

환경 변수를 설정하여 백엔드를 변경할 수 있습니다:

FORCE_QWENVL_VIDEO_READER=torchvision
# 또는
FORCE_QWENVL_VIDEO_READER=decord

도커 배포

간소화된 배포를 위해 공식 Docker 이미지를 사용할 수 있습니다:

docker run --gpus all --ipc=host --network=host --rm --name qwen2.5-omni -it qwenllm/qwen-omni:2.5-cu121 bash

도커를 통해 웹 데모를 시작하려면:

bash docker/docker_web_demo.sh --checkpoint /path/to/Qwen2.5-Omni-7B --flash-attn2

vLLM 배포

더 빠른 추론을 위해 vLLM을 권장합니다:

Qwen2.5-Omni 지원을 포함한 vLLM을 설치합니다:

pip install git+https://github.com/huggingface/transformers@1d04f0d44251be5e236484f8c8a00e1c7aa69022
pip install accelerate
pip install qwen-omni-utils
git clone -b qwen2_omni_public_v1 <https://github.com/fyabc/vllm.git> vllm
cd vllm
pip install .

기본 vLLM 사용법 (현재 텍스트 전용 출력 지원):

import os
import torch
from transformers import Qwen2_5OmniProcessor
from vllm import LLM, SamplingParams
from qwen_omni_utils import process_mm_info

os.environ['VLLM_USE_V1'] = '0'  # vLLM 엔진 v1은 아직 지원되지 않음
MODEL_PATH = "Qwen/Qwen2.5-Omni-7B"

llm = LLM(
    model=MODEL_PATH,
    trust_remote_code=True,
    gpu_memory_utilization=0.9,
    tensor_parallel_size=torch.cuda.device_count(),
    limit_mm_per_prompt={'image': 1, 'video': 1, 'audio': 1},
    seed=1234
)

# 예시와 같이 입력을 처리하고 출력을 생성합니다.

결론

Qwen2.5-Omni-7B는 멀티모달 AI 기술의 중요한 발전을 나타내며, 단일 모델에서 텍스트, 이미지, 오디오 및 비디오 처리를 통해 인상적인 성능을 제공합니다. 7B 매개변수 크기를 통해 능력과 리소스 요구 사항 간의 균형을 잘 맞추어 다양한 배포 시나리오에서 접근할 수 있습니다.

여러 모달리티를 이해할 수 있을 뿐만 아니라 텍스트와 음성을 모두 생성할 수 있는 모델의 능력은 가상 비서, 콘텐츠 생성, 접근성 도구 등 다양한 응용 프로그램에 대한 가능성을 열어줍니다. 더 큰 전문 모델에 대해 경쟁력 있는 성능을 보여 주어 그 구조와 훈련 방식의 효과를 입증합니다.

AI가 더 인간과 유사한 상호작용 기능으로 발전해 나가면서, Qwen2.5-Omni-7B와 같은 모델은 여러 형태의 통신을 원활하게 연결할 수 있는 보다 자연스럽고 다재다능한 인공지능 시스템을 만드는 데 중요한 진전을 나타냅니다.