Toda a versão chinesa de código aberto, totalmente comercializado do modelo LLAMA2 e conjunto de dados SFT chinês-inglês . O formato de entrada segue estritamente o formato LLAMA-2-CHAT e é compatível com todas as otimizações para o modelo LLama-2-Chat original.


A conversa é barata, mostre a demonstração.
Download do modelo
Quantização de 4 bits
Modelo GGML Q4:
Utilizamos conjuntos de dados SFT chinês e inglês com um volume de dados de 10 milhões.
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 ) Você pode usar o DockerFile no repositório para criar rapidamente uma imagem básica com base na versão mais recente da NVIDIA de nvcr.io/nvidia/pytorch:23.06-py3 e usar contêineres em qualquer lugar para executar aplicativos de modelo lhama2 chinês.
docker build -t linksoul/chinese-llama2-chat .Depois que a imagem for construída, use o comando para executar a imagem:
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-chatDeseja executar o modelo LLAMA2 em um ambiente de CPU? Use o seguinte método.
ggml/convert_to_ggml.py para executar operações de conversão. Para detalhes, consulte os parâmetros da CLI suportados pelo script.docker pull soulteary/llama2:converter para baixar a imagem da ferramenta de conversão de formato de formato e usar os dois comandos a seguir no contêiner do docker para concluir a operação (tutorial para criar um Modelo Big do Metaai Llama2 Chinês que pode ser executado com a 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_0Definição de configuração quantitativa:
Reproduzido em: https://www.reddit.com/r/localllama/comments/139yt87/notable_differences_between_q4_2_and_q5_1/
q4_0 = 32 números em pedaços, 4 bits por peso, valor de escala 1 em flutuação de 32 bits (5 bits por valor em média), cada peso é dado pelo valor quantizado da escala comum *.
Q4_1 = 32 números em pedaços, 4 bits por peso, 1 valor de escala e 1 valor de polarização em flutuação de 32 bits (6 bits por valor em média), cada peso é dado pela escala comum * Valor quantizado + viés comum.
Q4_2 = o mesmo que Q4_0, mas 16 números em pedaços, 4 bits por peso, valor de escala 1 que é de 16 bits, o mesmo tamanho do Q4_0, mas melhor porque os pedaços são menores.
Q4_3 = já morto, mas análogo: Q4_1, mas 16 números em pedaços, 4 bits por peso, valor de escala que é de 16 bits e viés também 16 bits, o mesmo tamanho que Q4_1, mas melhor porque os pedaços são menores.
q5_0 = 32 números em pedaços, 5 bits por peso, 1 valor de escala a 16 bits, o tamanho é de 5,5 bits por peso
Q5_1 = 32 números em um pedaço, 5 bits por peso, 1 valor de escala no flutuador de 16 bits e 1 valor de viés a 16 bits, o tamanho é de 6 bits por peso.
Q8_0 = o mesmo que Q4_0, exceto 8 bits por peso, valor de 1 escala em 32 bits, com o total de 9 bits por peso.
Primeiro, você precisa instalar o pip install fastapi uvicorn e, em seguida, executar a API.py no repositório:
python api.pyImplante na porta local 8000 por padrão e ligue para o método POST.
curl -X POST " http://127.0.0.1:8000 "
-H ' Content-Type: application/json '
-d ' {"prompt": "你好", "history": []} 'O valor de retorno obtido é
{
" 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 TrueLicença Apache-2.0
