[README] [?HF Repo] [?Webversion]
Chinesisch |. Englisch
Das große Yayi-Modell wird durch die Feinabstimmung von Anweisungen auf Millionen manuell erstellter hochwertiger Domänendaten erhalten. Die Trainingsdaten decken fünf Hauptbereiche ab, darunter Medienwerbung, öffentliche Meinungsanalyse, öffentliche Sicherheit, finanzielle Risikokontrolle und Stadtverwaltung Hunderte von Unterrichtsaufgaben in natürlicher Sprache. Während des iterativen Prozesses des Yayi-Großmodells von Initialisierungsgewichten vor dem Training bis hin zu Domänenmodellen haben wir schrittweise seine grundlegenden chinesischen Funktionen und Domänenanalysefunktionen verbessert und mehrere Dialogrunden und einige Plug-in-Funktionen hinzugefügt. Gleichzeitig haben wir durch kontinuierliche manuelle Feedbackoptimierung während des internen Testprozesses von Hunderten von Benutzern die Modellleistung und -sicherheit weiter verbessert.
Durch die Open Source des Yayi-Großmodells werden wir unsere eigenen Anstrengungen unternehmen, um die Entwicklung der vorab trainierten Großmodell-Open-Source-Community in China zu fördern. Durch Open Source werden wir mit jedem Partner das Yayi-Großmodell-Ökosystem aufbauen.
News: Yayi Large Model hat die chinesische Optimierungsmodellversion basierend auf LLaMA 2 als Open Source bereitgestellt, um die neuesten Praktiken zu erkunden, die für chinesische Multi-Domain-Aufgaben geeignet sind.
Modellname | ?HF-Modellidentifikation | Adresse herunterladen |
---|---|---|
YAYI -7B | Wenge-Forschung/ YAYI -7b | Modell-Download |
YAYI -7B-Llama2 | Wenge-Forschung/ YAYI -7b-llama2 | Modell-Download |
YAYI -13B-Llama2 | Wenge-Forschung/ YAYI -13b-llama2 | Modell-Download |
git clone https://github.com/wenge-research/YAYI.git
cd YAYI
conda create --name YAYI python=3.8
conda activate YAYI
pip install -r requirements.txt
Es wird nicht empfohlen, dass die Versionen torch
und transformers
niedriger sind als die empfohlenen Versionen.
Die Modellgewichte (Version 7b) sind als Open Source in unserem Huggingface-Modelllager verfügbar und können gerne heruntergeladen und verwendet werden. Das Folgende ist ein Beispielcode, der einfach YAYI -7b
für die Downstream-Task-Inferenz aufruft. Er kann auf einer einzelnen GPU wie A100/A800/3090 ausgeführt werden. Bei Verwendung der FP16-Präzisionsinferenz werden etwa 20 GB Videospeicher benötigt.
from transformers import AutoTokenizer , AutoModelForCausalLM , GenerationConfig
import torch
YAYI _7b_path = "wenge-research/ YAYI -7b"
tokenizer = AutoTokenizer . from_pretrained ( YAYI _7b_path )
model = AutoModelForCausalLM . from_pretrained ( YAYI _7b_path , device_map = "auto" , torch_dtype = torch . bfloat16 )
prompt = "你好"
formatted_prompt = f"<|System|>: n A chat between a human and an AI assistant named YAYI . n YAYI is a helpful and harmless language model developed by Beijing Wenge Technology Co.,Ltd. n n <|Human|>: n { prompt } n n <| YAYI |>:"
inputs = tokenizer ( formatted_prompt , return_tensors = "pt" ). to ( model . device )
eos_token_id = tokenizer ( "<|End|>" ). input_ids [ 0 ]
generation_config = GenerationConfig (
eos_token_id = eos_token_id ,
pad_token_id = eos_token_id ,
do_sample = True ,
max_new_tokens = 100 ,
temperature = 0.3 ,
repetition_penalty = 1.1 ,
no_repeat_ngram_size = 0
)
response = model . generate ( ** inputs , generation_config = generation_config )
print ( tokenizer . decode ( response [ 0 ]))
Beachten Sie, dass das spezielle Token <|End|>
während des Modelltrainings als Endzeichen hinzugefügt wird, sodass eos_token_id
auf die Token-ID gesetzt wird, die dem Endzeichen in GenerationConfig
des obigen Codes entspricht. Der auf dem LlaMA2-Anweisungs-Feinabstimmungsmodell basierende Inferenzcode unterscheidet sich geringfügig. Einzelheiten finden Sie in der entsprechenden Version in unserem Huggingface-Modelllager.
Dieses Projekt basiert auf dem deepspeed
Framework für das Modelltraining. Führen Sie nach der Konfiguration der Umgebung das entsprechende Skript aus, um mit dem Training zu beginnen. Unterstützt die vollständige Parameter-Feinabstimmung von Befehlsdaten, die LoRA-Feinabstimmung von Befehlsdaten, die vollständige Parameter-Feinabstimmung von Mehrrunden-Dialogdaten und die LoRA-Feinabstimmung von Mehrrunden-Dialogdaten.
Datenformat : Siehe data/ YAYI _train_example.json
, das das jsonline-Datenformat des Alpaca-Projekts übernimmt. Jede Zeile enthält ein JSON-Datenelement, das aus drei Feldern besteht: "instruction"
, "input"
und "output"
. Unter diesen sind "instruction"
und "input"
die Anweisungseingabe und "output"
die Ausgabeantwort.
Bedienungsanleitung : Führen Sie den folgenden Befehl aus, um die vollständige Parameter-Feinabstimmung des Yayi-Großmodells zu starten. Dieser Befehl unterstützt das Training mit mehreren Computern und mehreren Karten. Wenn Sie das Training mit mehreren Computern und mehreren Karten konfigurieren müssen, lesen Sie bitte die offizielle Deepspeed-Dokumentation. Es wird empfohlen, die Hardwarekonfiguration 4*A100 (80G) oder höher zu verwenden.
deepspeed --num_gpus=8
--module training.trainer
--data-path ./data/ YAYI _train_example.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-6
--seed 515
Datenformat : Wie oben, siehe data/ YAYI _train_example.json
.
Bedienungsanleitung : LoRA ist eine ressourcenschonende und effiziente Feinabstimmungsmethode, und eine einzige Karte kann zig Milliarden Parametermodelle trainieren. Dieses Projekt implementiert hauptsächlich die LoRA-Feinabstimmung basierend auf peft
. Führen Sie den folgenden Befehl aus, um die LoRA-Feinabstimmung des Yayi-Großmodells zu starten. Die Feinabstimmung kann mit einer einzelnen Karte A100 (80G) durchgeführt werden und die Lernrate kann auf einen größeren Wert eingestellt werden. Unter anderem legt --lora-dim
den Rang der Update-Matrix fest. Je größer der Wert, desto mehr Parameter für das Training. --lora-module-name
legt das Modul der LoRA-Update-Matrix fest je nach Modelltyp.
deepspeed --num_gpus=1
--module training.trainer_lora
--data-path ./data/ YAYI _train_example.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-4
--seed 515
--lora-dim 16
--lora-module-name query_key_value
Datenformat : Siehe data/ YAYI _train_example_multi_rounds.json
, eine Standard-JSON-Datei. Jedes Datenelement besteht aus "system"
und "conversations"
, wobei "system"
die globalen Rolleneinstellungsinformationen ist und eine leere Zeichenfolge sein kann. "conversations"
Es handelt sich um einen mehrrundigen Dialog zwischen zwei Charakteren, Menschen und YAYI abwechselnd.
Betriebsanweisungen : Führen Sie den folgenden Befehl aus, um die Feinabstimmung der vollständigen Parameter des Yayi-Großmodells zu starten. Für Mehrrunden-Dialogdaten wird nur der Verlust der vom Modell generierten Antwort berechnet. Dieser Befehl unterstützt das Training mit mehreren Computern und mehreren Karten. Wenn Sie das Training mit mehreren Computern und mehreren Karten konfigurieren müssen, lesen Sie bitte die offizielle Deepspeed-Dokumentation. Es wird empfohlen, die Hardwarekonfiguration 4*A100 (80G) oder höher zu verwenden.
deepspeed --num_gpus=8
--module training.trainer_multi_rounds
--data-path ./data/ YAYI _train_example_multi_rounds.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-7
--seed 515
data/ YAYI _train_example_multi_rounds.json
.Das Yayi-Großmodell wird auf der Grundlage des hochwertigen Feinabstimmungsdatensatzes für Domänenanweisungen von Zhongke Wenge trainiert. Diesmal öffnen wir 50.000 Trainingsdatensätze, die aus unserem Huggingface-Data-Warehouse heruntergeladen werden können. Der Datensatz deckt hauptsächlich mehrere wichtige Bereiche wie Finanzen, Sicherheit, öffentliche Meinung und Medien ab. Wir haben den meisten Befehlsdaten von Aufgaben in jedem Bereich diskrete Eingabeaufforderungspräfixe hinzugefügt, um die Daten in jedem Bereich zu unterscheiden. Darüber hinaus umfassen die Trainingsdaten auch einige Sicherheitsverbesserungsdaten, Plug-In-Fähigkeitsdaten, Mehrrundendialogdaten usw.
Das auf Basis aktueller Daten und Basismodelle trainierte SFT-Modell weist hinsichtlich der Wirksamkeit noch folgende Probleme auf:
Basierend auf den oben genannten Modellbeschränkungen verlangen wir von Entwicklern, dass sie unseren Open-Source-Code, unsere Daten, Modelle und Folgeableitungen, die von diesem Projekt generiert werden, nur für Forschungszwecke und nicht für kommerzielle Zwecke oder andere Zwecke verwenden, die der Gesellschaft Schaden zufügen. Bitte achten Sie darauf, die von Yayi Big Model generierten Inhalte zu identifizieren und zu verwenden und die generierten schädlichen Inhalte nicht im Internet zu verbreiten. Sollten nachteilige Folgen eintreten, trägt der Kommunikator die Verantwortung.
Dieses Projekt darf nur zu Forschungszwecken verwendet werden und der Projektentwickler ist nicht verantwortlich für Schäden oder Verluste, die durch die Verwendung dieses Projekts entstehen (einschließlich, aber nicht beschränkt auf Daten, Modelle, Codes usw.). Einzelheiten entnehmen Sie bitte dem Haftungsausschluss.
Der Code in diesem Projekt ist Open Source gemäß dem Apache-2.0-Protokoll, und die Daten übernehmen das CC BY-NC 4.0-Protokoll. Die Verwendung von Modellgewichten YAYI -Serie muss der Modelllizenz entsprechen.