Diálogo inteligente de IA: introducción a la construcción local ChatGLM2-6B

Resumen

¿Qué has hecho este mes? He estado pintando con IA durante aproximadamente 2 semanas, dibujo arquitectónico SD, entrenando a LORA y básicamente comencé con el control del modelo. Puedo generar lo que quiero como se esperaba. La sensación de control es bastante feliz, de lo contrario, si ingresas un frase para generar una imagen de IA, será completamente Por voluntad de Dios, esto se llama comunicación no válida. De repente quise participar en la síntesis de canciones de IA. Para evitar litigios por derechos de autor, sinteticé algunas canciones con mi propia voz. Porque eran No fue grabado en un estudio de grabación y había relativamente pocos datos de sonido, por lo que el efecto del entrenamiento aún es un poco insatisfactorio, pero en comparación con mi propio canto, ya es sorprendente; después de completar la práctica del lenguaje de IA, comencé a trabajar en IA. El diálogo de inteligencia artificial, que es el más cercano al pensamiento cerebral, es una tecnología con una amplia gama de aplicaciones, por lo que hay que implementarla.

Después de practicar estos dispositivos, ¿cómo juegas con ellos? De hecho, hay dos niveles de aplicación industrial para la IA. Uno son los algoritmos y aplicaciones de IA y el otro es la programación de la potencia informática de la IA. Porque el año pasado participé en Mobile Cloud's "Número Este y Número Oeste" "El diseño de la arquitectura y la programación de la potencia informática de la IA deberían estar bien (los recursos de potencia informática se desperdiciaron mucho el año pasado). Echemos un vistazo a la lógica del algoritmo. Además, tengo exámenes en la segunda mitad del año. año, así que no puedo perder mucho tiempo en ello. He pasado mis fines de semana en los últimos dos meses haciendo esto, no puedo dejar que se asimile así.

Implementación de compilación

información ambiental

**
SO: Win11
GPU: 3070-RTX 32G
PYTHON: 3.10
**

Nivel cuantitativo GPU mínima (conversación) GPU mínima (ajuste fino)
FP16 (estándar) 13GB 14GB
INT8 8GB 9GB
INT4 6GB 7GB
Instalar dependencias

Descarga del proyecto

# 下载
git clone https://github.com/THUDM/ChatGLM2-6B

# 安装相关依赖
cd ChatGLM2-6B
pip install -r requirements.txt -i https://pypi.douban.com/simple

Descarga del modelo

Enlace del disco en la nube: https://pan.baidu.com/s/1AIerQMpvw7yO34Gq9BFxAQ
Código de extracción: 5uzo

Coloque el modelo descargado en la carpeta THUDM:

Controlador de tarjeta gráfica

# 查看本机显卡信息
nvidia-smi

Instale la herramienta cuda-toolkit: https://developer.nvidia.com/cuda-toolkit-archive

Nota: Elija una versión no superior a la CUDA mencionada anteriormente; la versión recomendada es 11.8;

**Dependencias de Pytorch**

# 下载对应版本的 Pytorch
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

**Verificación CUDA**

# cuda 可用校验(返回 True 则表示可用)
python -c "import torch; print(torch.cuda.is_available());"
Opciones de configuración

** Selección de precisión **
En api.py cli_demo.py web_demo.py web_demo.py y otros scripts, el comando es el siguiente:

# 模型默认以 FP16 精度加载,运行模型需要大概 13GB 显存
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).cuda()

# 如果 GPU 显存有限,按需修改,目前只支持 4/8 bit 量化
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).quantize(4).cuda()

# 如果内存不足,可以直接加载量化后的模型
model = AutoModel.from_pretrained("THUDM/chatglm2-6b-int4",trust_remote_code=True).cuda()

# 如果没有 GPU 硬件的话,也可以在 CPU 上进行对话,但是对话速度会很慢,需要32GB内存(量化模型需要5GB内存)
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).float()

# 如果内存不足,可以直接加载量化后的模型
model = AutoModel.from_pretrained("THUDM/chatglm2-6b-int4",trust_remote_code=True).float()

Para ejecutar el modelo cuantificado en la CPU, también necesita instalar gcc y openmp. La mayoría de las distribuciones de Linux lo tienen instalado por defecto. Para Windows, se puede comprobar openmp al instalar TDM-GCC.

empezar a correr

**Consola**

# 控制台运行
python cli_demo.py

**Versión web**

# 方式一
python web_demo.py

# 方式二
# 安装 streamlit_chat 模块
pip install streamlit_chat -i https://pypi.douban.com/simple
streamlit run web_demo2.py

Nota: Debido al lento acceso a la red de Gradio en China, cuando demo.queue().launch(share=True, inbrowser=True) está habilitado, todas las redes se reenviarán a través del servidor de Gradio, lo que resultará en una disminución significativa en el experiencia de máquina de escribir. Ahora el método de inicio predeterminado se ha cambiado a share=False, si necesita acceso a la red pública, puede cambiarlo a share=True para comenzar.

** API **

# 安装 fastapi uvicorn 模块
pip install fastapi uvicorn -i https://pypi.douban.com/simple

# 运行 api
python api.py

De forma predeterminada, se implementa en el puerto local 8000 y se llama mediante el método POST.

curl -X POST "http://127.0.0.1:8000" \
     -H 'Content-Type: application/json' \
     -d '{"prompt": "你好", "history": []}'

Resumir

apéndice

Referencia: https://juejin.cn/post/7250348861238870053

Supongo que te gusta

Origin blog.csdn.net/weixin_36532747/article/details/131743255
Recomendado
Clasificación