Todas las versiones chinas totalmente comercializadas de código abierto del modelo LLAMA2 y conjunto de datos SFT chino-inglés . El formato de entrada sigue estrictamente el formato LLAMA-2-CHAT y es compatible con todas las optimizaciones para el modelo original de LLAMA-2-Chat .


Hablar es barato, mostrarte la demostración.
Descargar modelo
Cuantización de 4 bits
Modelo GGML Q4:
Utilizamos conjuntos de datos SFT chino e inglés con un volumen de datos de 10 millones.
from transformers import AutoTokenizer , AutoModelForCausalLM , TextStreamer
model_path = "LinkSoul/Chinese-Llama-2-7b"
tokenizer = AutoTokenizer . from_pretrained ( model_path , use_fast = False )
model = AutoModelForCausalLM . from_pretrained ( model_path ). half (). cuda ()
streamer = TextStreamer ( tokenizer , skip_prompt = True , skip_special_tokens = True )
instruction = """[INST] <<SYS>> n You are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe. Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. Please ensure that your responses are socially unbiased and positive in nature.
If a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don't know the answer to a question, please don't share false information. n <</SYS>> n n {} [/INST]"""
prompt = instruction . format ( "用中文回答,When is the best time to visit Beijing, and do you have any suggestions for me?" )
generate_ids = model . generate ( tokenizer ( prompt , return_tensors = 'pt' ). input_ids . cuda (), max_new_tokens = 4096 , streamer = streamer ) Puede usar DockerFile en el repositorio para crear rápidamente una imagen básica basada en la última versión de NVIDIA de nvcr.io/nvidia/pytorch:23.06-py3 , y usar contenedores en cualquier lugar para ejecutar aplicaciones de modelos LLAMA2 chinos.
docker build -t linksoul/chinese-llama2-chat .Después de construir la imagen, use el comando para ejecutar la imagen:
docker run --gpus all --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 --rm -it -v ` pwd ` /LinkSoul:/app/LinkSoul -p 7860:7860 linksoul/chinese-llama2-chat¿Quieres ejecutar el modelo LLAMA2 en un entorno de CPU? Use el siguiente método.
ggml/convert_to_ggml.py para realizar operaciones de conversión. Para obtener más detalles, consulte los parámetros CLI admitidos por el script.docker pull soulteary/llama2:converter para descargar la imagen de la herramienta de conversión de formato de modelo y use los siguientes dos comandos en el contenedor Docker para completar la operación (tutorial para construir un modelo chino MetaAi Llama2 chino que se puede ejecutar con la CPU): python3 convert.py /app/LinkSoul/Chinese-Llama-2-7b/ --outfile /app/LinkSoul/Chinese-Llama-2-7b-ggml.bin
./quantize /app/LinkSoul/Chinese-Llama-2-7b-ggml.bin /app/LinkSoul/Chinese-Llama-2-7b-ggml-q4.bin q4_0Definición de configuración cuantitativa:
Reimpreso de: https://www.reddit.com/r/localllama/comments/139yt87/notable_differences_between_q4_2_and_q5_1/
Q4_0 = 32 Números en fragmento, 4 bits por peso, 1 valor de escala a 32 bits flotante (5 bits por valor en promedio), cada peso está dado por el valor cuantizado de la escala común *.
Q4_1 = 32 Números en fragmento, 4 bits por peso, 1 valor de escala y 1 valor de sesgo a 32 bits flotante (6 bits por valor en promedio), cada peso está dado por la escala común * Valor cuantizado + sesgo común.
Q4_2 = igual que Q4_0, pero 16 números en trozo, 4 bits por peso, 1 valor de escala que es flotante de 16 bits, el mismo tamaño que Q4_0 pero mejor porque los fragmentos son más pequeños.
Q4_3 = ya está muerto, pero análogo: Q4_1 pero 16 números en fragmento, 4 bits por peso, valor de escala que es de 16 bits y sesgo también 16 bits, el mismo tamaño que Q4_1 pero mejor porque los trozos son más pequeños.
Q5_0 = 32 Números en trozo, 5 bits por peso, 1 valor de escala a flotador de 16 bits, el tamaño es de 5.5 bits por peso
Q5_1 = 32 Números en un trozo, 5 bits por peso, 1 valor de escala a 16 bits flotante y 1 valor de sesgo a 16 bits, el tamaño es de 6 bits por peso.
Q8_0 = igual que Q4_0, excepto 8 bits por peso, 1 valor de escala a 32 bits, lo que hace un total de 9 bits por peso.
Primero, debe instalar la dependencia adicional pip install fastapi uvicorn , y luego ejecutar API.py en el repositorio:
python api.pyImplemente en el puerto local 8000 de forma predeterminada y llámelo a través del método de publicación.
curl -X POST " http://127.0.0.1:8000 "
-H ' Content-Type: application/json '
-d ' {"prompt": "你好", "history": []} 'El valor de retorno obtenido es
{
" response " : " 你好!我是一个人工智能语言模型,可以回答你的问题和进行对话。请问你有什么需要帮助的吗? " ,
" history " :[[ " <<SYS>>nYou are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe. Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. Please ensure that your responses are socially unbiased and positive in nature.nn If a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don't know the answer to a question, please don't share false information.n<</SYS>>nn你好" , " 你好!我是一个人工智能语言模型,可以回答你的问题和进行对话。请问你有什么需要帮助的吗? " ]],
" status " :200,
" time " : " 2023-08-01 09:22:16 "
}DATASET= " LinkSoul/instruction_merge_set "
DATA_CACHE_PATH= " hf_datasets_cache "
MODEL_PATH= " /PATH/TO/TRANSFORMERS/VERSION/LLAMA2 "
output_dir= " ./checkpoints_llama2 "
torchrun --nnodes=1 --node_rank=0 --nproc_per_node=8
--master_port=25003
train.py
--model_name_or_path ${MODEL_PATH}
--data_path ${DATASET}
--data_cache_path ${DATA_CACHE_PATH}
--bf16 True
--output_dir ${output_dir}
--num_train_epochs 1
--per_device_train_batch_size 4
--per_device_eval_batch_size 4
--gradient_accumulation_steps 1
--evaluation_strategy ' no '
--save_strategy ' steps '
--save_steps 1200
--save_total_limit 5
--learning_rate 2e-5
--weight_decay 0.
--warmup_ratio 0.03
--lr_scheduler_type cosine
--logging_steps 1
--fsdp ' full_shard auto_wrap '
--fsdp_transformer_layer_cls_to_wrap ' LlamaDecoderLayer '
--tf32 True
--model_max_length 4096
--gradient_checkpointing TrueApache-2.0 Licencia
