WeClone: ajusta un LLM con tu historial de chats de WeChat para crear un gemelo digital personal
¿Qué es WeClone?
WeClone es un proyecto de código abierto que tiene como objetivo ajustar un LLM mediante los registros de chat de WeChat, y combinando mensajes de voz de WeChat con un modelo grande para lograr clonación de voz de alta calidad, y finalmente vincularlo a un robot de WeChat, para conseguir un ia gemelo digital personal.

Funciones de WeClone
Ajuste de LLM con registros de chat de WeChat: ajusta el modelo de lenguaje con los propios registros de chat de WeChat del usuario, para que se adapte mejor al estilo y los hábitos lingüísticos personales.
Clonación de voz de alta calidad: combina mensajes de voz de WeChat con un modelo grande de 0.5B para lograr una clonación de voz de alta calidad.
Vinculación con el robot de WeChat: vincula el modelo ajustado al robot de WeChat para habilitar respuestas automáticas y otras funciones, formando así un gemelo digital personal.
Características de WeClone
Requisitos de hardware: utiliza por defecto el modelo chatglm3-6b; el ajuste con el método LoRA requiere aproximadamente 16 GB de VRAM. Se pueden configurar otros modelos y métodos según se necesite.
Requisitos de software: se recomienda usar Python 3.10, así como versiones específicas de PyTorch, Transformers y otras bibliotecas.
Configuración del entorno: clona el proyecto con Git, crea un entorno con Conda e instala las dependencias.
Preparación de datos: usa PyWxDump para extraer los registros de chat de WeChat y exportarlos en formato CSV.
Preprocesamiento de datos: elimina la información sensible y admite varias formas de procesamiento de datos.
Descarga del modelo: se recomienda descargar el modelo ChatGLM3 desde Hugging Face o la comunidad ModelScope (魔搭).
Ajuste del modelo: modifica los parámetros de configuración en settings.json para realizar el entrenamiento con una o varias GPUs.
Inferencia y pruebas: ofrece una demo en el navegador y funciones de inferencia por API, y admite pruebas con preguntas de chat habituales.
Despliegue del robot de WeChat: permite iniciar sesión escaneando un código QR y admite la interacción del robot en chats privados y grupales.

Pasos de uso de WeClone
Configuración del entorno
Clonar el proyecto: ejecuta el siguiente comando en la terminal para clonar el proyecto WeClone en local.
git clone https://github.com/xming521/WeClone.git
Crear y activar el entorno virtual: usa Conda para crear un nuevo entorno de Python y actívalo.
conda create -n weclone python=3.10 conda activate weclone
Instalar dependencias: entra en el directorio del proyecto e instala los paquetes necesarios.
cd WeClone pip install -r requirements.txt
Preparación de datos
Extraer registros de chat de WeChat: usa el software PyWxDump para extraer los registros de chat de WeChat. Descarga e instala este software, descifra la base de datos, haz clic en la copia de seguridad del chat y selecciona CSV como tipo de exportación. Puedes exportar los registros de chat de varios contactos o grupos.
Colocar los datos: coloca la carpeta csv exportada, ubicada en wxdump_tmp/export, en el directorio ./data del proyecto, es decir, las carpetas de los registros de chat de distintas personas juntas en ./data/csv. Los datos de ejemplo se encuentran en data/example_chat.csv.
Preprocesamiento de datos
Eliminar información sensible: el proyecto elimina por defecto información sensible como números de teléfono, números de identificación, correos electrónicos y direcciones web de los datos. Además, se proporciona un diccionario de palabras bloqueadas (blocked_words) en el que puedes añadir las palabras y frases que desees filtrar; el programa eliminará por defecto las frases completas que contengan palabras bloqueadas.
Procesar el formato de los datos: ejecuta el script ./make_dataset/csv_to_json.py para procesar los datos. Cuando una misma persona responda con varias frases seguidas, puedes elegir una de las siguientes tres formas de procesamiento:
Usar csv_to_json.py: une varias respuestas con comas.
Usar csv_to_json-单句回答.py (obsoleto): solo se selecciona la respuesta más larga como dato final.
Usar csv_to_json-单句多轮.py: coloca varias respuestas en el campo 'history' del prompt.
Descarga del modelo
Hugging Face como opción preferente: descarga el modelo ChatGLM3 desde Hugging Face. Si tienes problemas con la descarga del modelo en Hugging Face, puedes usar el modelo de la comunidad ModelScope (魔搭).
Usar la comunidad ModelScope (魔搭): si eliges usar el modelo de la comunidad ModelScope, primero ejecuta el siguiente comando para usarlo.
export USE_MODELSCOPE_HUB=1 # En Windows usar `set USE_MODELSCOPE_HUB=1` git lfs install git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
Nota: el archivo modeling_chatglm.py de la comunidad ModelScope (魔搭) debe sustituirse por el de Hugging Face.
Configurar parámetros y ajustar el modelo
Modificar el archivo de configuración: la configuración relacionada con el entrenamiento y la inferencia se unifica en el archivo settings.json. Puedes modificar los siguientes parámetros según sea necesario:
Modifica per_device_train_batch_size y gradient_accumulation_steps para ajustar el uso de VRAM.
Modifica parámetros como num_train_epochs, lora_rank y lora_dropout según la cantidad y calidad del conjunto de datos.
(Opcional) Modifica settings.json para seleccionar otros modelos descargados localmente.
Entrenamiento con una sola GPU: ejecuta el siguiente comando para realizar el ajuste en la fase sft.
python src/train_sft.py
El autor comenta que su propia loss solo bajó hasta alrededor de 3,5; bajarla demasiado puede provocar sobreajuste. Utilizó aproximadamente 20 000 datos efectivos tras la integración.
Entrenamiento con varias GPUs: si dispones de varias GPUs, puedes usar deepspeed para entrenar con varias GPUs. Primero instala deepspeed y luego ejecuta el siguiente comando.
pip install deepspeed deepspeed --num_gpus=número de GPUs a usar src/train_sft.py
Inferencia y pruebas
Inferencia sencilla con la demo del navegador: el proyecto ofrece una demo en el navegador que permite realizar pruebas de inferencia sencillas.
Inferencia usando la API: ejecuta el siguiente comando para iniciar el servicio de la API.
python ./src/api_service.py
Probar con preguntas de chat habituales: ejecuta el siguiente comando para probar con preguntas de chat habituales.
python ./src/test_model.py
Desplegar el robot de chat de WeChat
Iniciar el servicio de la API: primero ejecuta el siguiente comando para iniciar el servicio de la API.
python ./src/api_service.py
Ejecutar el script del robot de WeChat: a continuación, ejecuta el siguiente comando para iniciar el robot de chat de WeChat.
python ./src/wechat_bot/main.py
Por defecto se muestra un código QR en la terminal; basta con escanearlo para iniciar sesión. Puedes usarlo en chats privados o mencionándolo con @ en los chats grupales.
Precauciones: WeChat tiene riesgo de banear cuentas, por lo que se recomienda usar una cuenta secundaria. Además, es obligatorio tener una tarjeta bancaria vinculada para poder usarlo.
errer noopener">Clonación de voz (módulo WeClone-audio)
Solución Spark-TTS (recomendada):
Importar los módulos relacionados.
import SparkTTS from SparkTTS import SparkTTS
Inicializar el modelo.
model = SparkTTS("WeClone-audio/pretrained_models/Spark-TTS-0.5B", "cuda")Realizar la inferencia de clonación de voz.
with torch.no_grad(): wav = model.inference( text="要生成的文本内容", prompt_speech_path="示例音频路径", prompt_text="示例音频对应的文本", )
Solución Llasa:
Importar los módulos relacionados.
from text_to_speech import TextToSpeech
Inicializar y realizar la inferencia.
tts = TextToSpeech(sample_audio_path, sample_audio_text)
result = tts.infer("要生成的文本内容")Dirección de Github:https://github.com/xming521/WeClone
Asistente de guiones▸
Apps AI
Noticias AI 