WeClone: Feintuning eines LLMs mit deinem WeChat-Chatverlauf zur Erstellung eines persönlichen digitalen Zwillings
Was ist WeClone?
WeClone ist ein Open-Source-Projekt, das darauf abzielt, ein LLM mithilfe von WeChat-Chatverläufen feinzujustieren und in Kombination mit WeChat-Sprachnachrichten und einem großen Modell qualitativ hochwertiges Stimmklonen zu realisieren, um es schließlich an einen WeChat-Bot zu binden und so einen persönlichen digitalen KI-Klon zu schaffen.

WeClone-Funktionen
Feinjustierung des LLM mit WeChat-Chatverläufen: Das Sprachmodell wird anhand der eigenen WeChat-Chatverläufe des Nutzers feinjustiert, sodass es besser zum persönlichen Sprachstil und den Gewohnheiten passt.
Hochwertiges Stimmklonen: In Kombination mit WeChat-Sprachnachrichten und einem 0,5B-Modell wird ein hochwertiges Stimmklonen ermöglicht.
Anbindung an den WeChat-Bot: Das feinjustierte Modell wird an einen WeChat-Bot gebunden, um Funktionen wie automatische Antworten zu realisieren und so einen persönlichen digitalen Klon zu schaffen.
WeClone-Eigenschaften
Hardwareanforderungen: Standardmäßig wird das Modell chatglm3-6b verwendet; für die Feinjustierung mit der LoRA-Methode werden ca. 16 GB VRAM benötigt. Andere Modelle und Methoden können nach Belieben konfiguriert werden.
Softwareanforderungen: Empfohlen werden Python 3.10 sowie bestimmte Versionen von Bibliotheken wie PyTorch und Transformers.
Umgebungseinrichtung: Das Projekt wird per Git geklont; mit Conda wird eine Umgebung erstellt und die Abhängigkeiten werden installiert.
Datenaufbereitung: Mit PyWxDump werden WeChat-Chatverläufe extrahiert und als CSV exportiert.
Datenvorverarbeitung: Sensible Informationen werden entfernt; verschiedene Datenverarbeitungsmethoden werden unterstützt.
Modelldownload: Empfohlen wird das Herunterladen des ChatGLM3-Modells von Hugging Face oder der ModelScope-Community.
Modell feinjustieren: Durch Ändern der Parameter in settings.json kann das Training auf einer oder mehreren GPUs durchgeführt werden.
Inferenz und Tests: Es werden ein Browser-Demo und Inferenz per API bereitgestellt; Tests mit gängigen Chatfragen werden unterstützt.
Bereitstellung des WeChat-Bots: Login per QR-Code; Bot-Interaktion in Privat- und Gruppenchats wird unterstützt.

Schritte zur Nutzung von WeClone
Umgebungseinrichtung
Projekt klonen: Führen Sie den folgenden Befehl im Terminal aus, um das WeClone-Projekt lokal zu klonen.
git clone https://github.com/xming521/WeClone.git
Virtuelle Umgebung erstellen und aktivieren: Erstellen Sie mit Conda eine neue Python-Umgebung und aktivieren Sie diese.
conda create -n weclone python=3.10 conda activate weclone
Abhängigkeiten installieren: Wechseln Sie in das Projektverzeichnis und installieren Sie die erforderlichen Abhängigkeiten.
cd WeClone pip install -r requirements.txt
Datenaufbereitung
WeChat-Chatverläufe extrahieren: Verwenden Sie die Software PyWxDump, um WeChat-Chatverläufe zu extrahieren. Laden Sie die Software herunter und installieren Sie sie. Entschlüsseln Sie nach der Entschlüsselung der Datenbank die Chat-Sicherung und wählen Sie als Exporttyp CSV. Es können Chatverläufe mehrerer Kontakte oder Gruppen exportiert werden.
Daten ablegen: Legen Sie den exportierten CSV-Ordner aus wxdump_tmp/export im Verzeichnis ./data des Projekts ab, d. h. die Ordner der Chatverläufe verschiedener Personen gemeinsam in ./data/csv. Beispieldaten befinden sich unter data/example_chat.csv.
Datenvorverarbeitung
Entfernen sensibler Informationen: Das Projekt entfernt standardmäßig sensible Informationen wie Telefonnummern, Ausweisnummern, E-Mail-Adressen und URLs aus den Daten. Zusätzlich steht eine Sperrwortliste blocked_words zur Verfügung, in die nach Bedarf zu filternde Wörter oder Sätze ergänzt werden können; das Programm entfernt standardmäßig den gesamten Satz, der ein Sperrwort enthält.
Datenformat verarbeiten: Führen Sie das Skript ./make_dataset/csv_to_json.py aus, um die Daten zu verarbeiten. Wenn dieselbe Person mehrere Antworten hintereinander gibt, kann eine der folgenden drei Verarbeitungsmethoden gewählt werden:
Verwendung von csv_to_json.py: Mehrere Antworten werden mit Kommas verbunden.
Verwendung von csv_to_json-单句回答.py (veraltet): Es wird nur die längste Antwort als endgültige Daten ausgewählt.
Verwendung von csv_to_json-单句多轮.py: Die mehreren Antworten werden in die 'history' des Prompts eingefügt.
Modelldownload
Bevorzugt Hugging Face: Laden Sie das ChatGLM3-Modell von Hugging Face herunter. Wenn beim Download des Modells von Hugging Face Probleme auftreten, können Sie das Modell der ModelScope-Community verwenden.
ModelScope-Community verwenden: Wenn Sie das Modell der ModelScope-Community verwenden möchten, führen Sie zunächst die folgenden Befehle aus.
export USE_MODELSCOPE_HUB=1 # Unter Windows: `set USE_MODELSCOPE_HUB=1` git lfs install git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
Hinweis: Die Datei modeling_chatglm.py der ModelScope-Community muss durch die von Hugging Face ersetzt werden.
Parameter konfigurieren und Modell feinjustieren
Konfigurationsdatei ändern: Die Konfigurationen für Training und Inferenz sind zentral in der Datei settings.json. Die folgenden Parameter können nach Bedarf angepasst werden:
Passen Sie per_device_train_batch_size sowie gradient_accumulation_steps an, um die VRAM-Auslastung zu steuern.
Passen Sie num_train_epochs, lora_rank, lora_dropout usw. je nach Anzahl und Qualität des Datensatzes an.
(Optional) Ändern Sie settings.json, um ein anderes lokal heruntergeladenes Modell auszuwählen.
Training auf einer GPU: Führen Sie den folgenden Befehl aus, um die Feinjustierung in der sft-Phase durchzuführen.
python src/train_sft.py
Der Autor gibt an, dass sein eigener Loss nur auf etwa 3,5 gesunken ist; ein zu starker Abfall kann zu Overfitting führen. Er verwendete rund 20.000 zusammengeführte, valide Datenpunkte.
Training auf mehreren GPUs: Wenn mehrere GPUs zur Verfügung stehen, kann mit deepspeed ein Multi-GPU-Training durchgeführt werden. Installieren Sie zunächst deepspeed und führen Sie dann den folgenden Befehl aus.
pip install deepspeed deepspeed --num_gpus=Anzahl_der_GPUs src/train_sft.py
Inferenz und Tests
Einfache Inferenz mit dem Browser-Demo: Das Projekt stellt ein Browser-Demo zur Verfügung, mit dem einfache Inferenztests durchgeführt werden können.
Inferenz per API: Führen Sie den folgenden Befehl aus, um den API-Dienst zu starten.
python ./src/api_service.py
Tests mit gängigen Chatfragen: Führen Sie den folgenden Befehl aus, um Tests mit gängigen Chatfragen durchzuführen.
python ./src/test_model.py
WeChat-Chatbot bereitstellen
API-Dienst starten: Führen Sie zunächst den folgenden Befehl aus, um den API-Dienst zu starten.
python ./src/api_service.py
WeChat-Bot-Skript ausführen: Führen Sie anschließend den folgenden Befehl aus, um den WeChat-Chatbot zu starten.
python ./src/wechat_bot/main.py
Standardmäßig wird der QR-Code im Terminal angezeigt; melden Sie sich durch Scannen an. Sie können den Bot privat oder in Gruppenchats mit @ erwähnen.
Hinweise: Bei WeChat besteht das Risiko einer Kontosperrung. Es wird empfohlen, einen Zweitaccount zu verwenden; eine Bankkarte muss zwingend hinterlegt sein, um den Dienst nutzen zu können.
eferrer noopener">Sprachklon-Modul (WeClone-audio)
Spark-TTS Lösung (empfohlen):
Importieren der relevanten Module.
import SparkTTS from SparkTTS import SparkTTS
Modell initialisieren.
model = SparkTTS("WeClone-audio/pretrained_models/Spark-TTS-0.5B", "cuda")Sprachklon-Inferenz durchführen.
with torch.no_grad(): wav = model.inference( text="要生成的文本内容", prompt_speech_path="示例音频路径", prompt_text="示例音频对应的文本", )
Llasa Lösung:
Importieren der relevanten Module.
from text_to_speech import TextToSpeech
Initialisieren und Inferenz durchführen.
tts = TextToSpeech(sample_audio_path, sample_audio_text)
result = tts.infer("要生成的文本内容")Github-Adresse:https://github.com/xming521/WeClone
Drehbuch-Assistent▸
AI Apps
AI Nachrichten 