Toutes les versions chinoises open source et entièrement commercialisées du modèle LLAMA2 et de l'ensemble de données SFT chinois-anglais . Le format d'entrée suit strictement le format LLAMA-2-CHAT et est compatible avec toutes les optimisations pour le modèle original LLAMA-2-CAT .


Parler est bon marché, montrez-vous la démo.
Téléchargement du modèle
Quantification 4 bits
Modèle GGML Q4:
Nous avons utilisé des ensembles de données SFT chinois et anglais avec un volume de données de 10 millions.
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 ) Vous pouvez utiliser Dockerfile dans le référentiel pour créer rapidement une image de base basée sur la dernière version de NVIDIA de nvcr.io/nvidia/pytorch:23.06-py3 , et utiliser des conteneurs n'importe où pour exécuter des applications de modèle LLAMA2 chinois.
docker build -t linksoul/chinese-llama2-chat .Une fois l'image construite, utilisez la commande pour exécuter l'image:
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-chatVous voulez exécuter le modèle LLAMA2 dans un environnement CPU? Utilisez la méthode suivante.
ggml/convert_to_ggml.py pour effectuer des opérations de conversion. Pour plus de détails, consultez les paramètres CLI pris en charge par le script.docker pull soulteary/llama2:converter pour télécharger l'image de l'outil de conversion de format de modèle et utiliser les deux commandes suivantes dans le conteneur Docker pour terminer l'opération (tutoriel pour construire un grand modèle chinois Metaai Llama2 qui peut être exécuté avec le processeur): 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_0Définition de configuration quantitative:
Réimprimé de: https://www.reddit.com/r/localllama/comments/139yt87/noable_differences_between_q4_2_and_q5_1/
Q4_0 = 32 nombres en morceaux, 4 bits par poids, 1 valeur d'échelle à un flotteur 32 bits (5 bits par valeur en moyenne), chaque poids est donné par l'échelle commune * Valeur quantifiée.
Q4_1 = 32 nombres en morceaux, 4 bits par poids, 1 valeur d'échelle et 1 valeur de biais à un flotteur 32 bits (6 bits par valeur en moyenne), chaque poids est donné par l'échelle commune * Valeur quantifiée + biais commun.
Q4_2 = Identique à Q4_0, mais 16 nombres en morceaux, 4 bits par poids, 1 valeur d'échelle qui est un flotteur 16 bits, même taille que Q4_0 mais mieux car les morceaux sont plus petits.
Q4_3 = déjà mort, mais analogue: Q4_1 mais 16 nombres en morceaux, 4 bits par poids, valeur d'échelle qui est 16 bits et biais également 16 bits, même taille que Q4_1 mais mieux parce que les morceaux sont plus petits.
Q5_0 = 32 nombres en morceaux, 5 bits par poids, 1 valeur d'échelle à un flotteur 16 bits, la taille est de 5,5 bits par poids
Q5_1 = 32 nombres dans un morceau, 5 bits par poids, 1 valeur d'échelle à 16 bits et 1 valeur de biais à 16 bits, la taille est de 6 bits par poids.
Q8_0 = Identique à Q4_0, sauf 8 bits par poids, 1 valeur d'échelle à 32 bits, ce qui représente un total de 9 bits par poids.
Tout d'abord, vous devez installer la dépendance supplémentaire pip install fastapi uvicorn , puis exécuter api.py dans le référentiel:
python api.pyDéployez par défaut sur le port local 8000 et appelez-le via la méthode Post.
curl -X POST " http://127.0.0.1:8000 "
-H ' Content-Type: application/json '
-d ' {"prompt": "你好", "history": []} 'La valeur de retour obtenue est
{
" 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 TrueLicence Apache-2.0
