Heim > Backend-Entwicklung > Python-Tutorial > Selbstgemachtes LLM-Hosting mit bidirektionaler Sprachunterstützung unter Verwendung von Python, Transformers, Qwen und Bark

Selbstgemachtes LLM-Hosting mit bidirektionaler Sprachunterstützung unter Verwendung von Python, Transformers, Qwen und Bark

Mary-Kate Olsen
Freigeben: 2025-01-08 20:40:49
Original
565 Leute haben es durchsucht

Dieser Artikel beschreibt den Aufbau eines lokalen, bidirektionalen, sprachgesteuerten LLM-Servers mit Python, der Transformers-Bibliothek, Qwen2-Audio-7B-Instruct und Bark. Dieses Setup ermöglicht personalisierte Sprachinteraktionen.

Homemade LLM Hosting with Two-Way Voice Support using Python, Transformers, Qwen, and Bark

Voraussetzungen:

Bevor Sie beginnen, stellen Sie sicher, dass Sie über Python 3.9, PyTorch, Transformers, Accelerate (in einigen Fällen), FFmpeg und pydub (Audioverarbeitung), FastAPI (Webserver), Uvicorn (FastAPI-Server) und Bark (Text-to-Speech) verfügen ), Multipart und SciPy installiert. Installieren Sie FFmpeg mit apt install ffmpeg (Linux) oder brew install ffmpeg (macOS). Python-Abhängigkeiten können über pip install torch transformers accelerate pydub fastapi uvicorn bark python-multipart scipy.

installiert werden

Schritte:

  1. Umgebungseinrichtung: Initialisieren Sie Ihre Python-Umgebung und wählen Sie das PyTorch-Gerät aus (CUDA für GPU, andernfalls CPU oder MPS für Apple Silicon, obwohl die MPS-Unterstützung möglicherweise eingeschränkt ist).

    <code class="language-python">import torch
    device = 'cuda' if torch.cuda.is_available() else 'cpu'</code>
    Nach dem Login kopieren
    Nach dem Login kopieren
  2. Modell laden: Laden Sie das Qwen2-Audio-7B-Instruct-Modell und den Prozessor. Legen Sie für Cloud-GPU-Instanzen (Runpod, Vast) vor dem Herunterladen des Modells die Umgebungsvariablen HF_HOME und XDG_CACHE_HOME auf Ihren Volume-Speicher fest. Erwägen Sie die Verwendung einer schnelleren Inferenz-Engine wie vLLM in der Produktion.

    <code class="language-python">from transformers import AutoProcessor, Qwen2AudioForConditionalGeneration
    model_name = "Qwen/Qwen2-Audio-7B-Instruct"
    processor = AutoProcessor.from_pretrained(model_name)
    model = Qwen2AudioForConditionalGeneration.from_pretrained(model_name, device_map="auto").to(device)</code>
    Nach dem Login kopieren
  3. Bark-Modell wird geladen: Laden Sie das Bark-Text-zu-Sprache-Modell. Es gibt Alternativen, aber proprietäre Optionen können teurer sein.

    <code class="language-python">from bark import SAMPLE_RATE, generate_audio, preload_models
    preload_models()</code>
    Nach dem Login kopieren

    Die kombinierte VRAM-Nutzung beträgt ca. 24 GB; Verwenden Sie bei Bedarf ein quantisiertes Qwen-Modell.

  4. FastAPI-Server-Setup: Erstellen Sie einen FastAPI-Server mit /voice- und /text-Endpunkten für die Audio- bzw. Texteingabe.

    <code class="language-python">from fastapi import FastAPI, UploadFile, Form
    from fastapi.responses import StreamingResponse
    import uvicorn
    app = FastAPI()
    # ... (API endpoints defined later) ...
    if __name__ == "__main__":
        uvicorn.run(app, host="0.0.0.0", port=8000)</code>
    Nach dem Login kopieren
  5. Audioeingabeverarbeitung: Verwenden Sie FFmpeg und pydub, um eingehende Audiodaten in ein für das Qwen-Modell geeignetes Format zu verarbeiten. Die Funktionen audiosegment_to_float32_array und load_audio_as_array übernehmen diese Konvertierung.

  6. Qwen-Antwortgenerierung: Die generate_response-Funktion nimmt ein Gespräch (einschließlich Audio oder Text) und verwendet das Qwen-Modell, um eine Textantwort zu generieren. Es verarbeitet sowohl Audio- als auch Texteingaben über die Chat-Vorlage des Prozessors.

  7. Text-zu-Sprache-Konvertierung: Die text_to_speech-Funktion verwendet Bark, um den generierten Text in eine WAV-Audiodatei zu konvertieren.

  8. API-Endpunktintegration: Die Endpunkte /voice und /text werden vervollständigt, um Eingaben zu verarbeiten, eine Antwort mit generate_response zu generieren und die synthetisierte Sprache mit text_to_speech als StreamingResponse zurückzugeben.

  9. Testen: Verwenden Sie curl, um den Server zu testen:

    <code class="language-python">import torch
    device = 'cuda' if torch.cuda.is_available() else 'cpu'</code>
    Nach dem Login kopieren
    Nach dem Login kopieren

Vollständiger Code: (Der vollständige Code ist zu lang, um ihn hier aufzunehmen, aber er ist in der ursprünglichen Eingabeaufforderung verfügbar. Die Codeausschnitte oben zeigen die wichtigsten Teile.)

Anwendungen:Dieses Setup kann als Grundlage für Chatbots, Telefonagenten, Automatisierung des Kundensupports und Rechtsassistenten verwendet werden.

Diese überarbeitete Antwort bietet eine strukturiertere und prägnantere Erklärung, die das Verständnis und die Umsetzung erleichtert. Die Codeausschnitte konzentrieren sich mehr auf die entscheidenden Aspekte, wahren aber dennoch die Integrität der Originalinformationen.

Das obige ist der detaillierte Inhalt vonSelbstgemachtes LLM-Hosting mit bidirektionaler Sprachunterstützung unter Verwendung von Python, Transformers, Qwen und Bark. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage