Englisch | 中文
? Umarmendes Gesicht • ? ModelScope • ? kluges Modell
? Stellen Sie Fragen oder diskutieren Sie Ideen auf GitHub
Begleiten Sie uns auf ? Discord oder WeChat
Schauen Sie sich den Yi Tech Report an
Wachsen Sie im Yi Learning Hub
? Erfahren Sie im Yi Tech Blog
? Die Modelle der Yi-Serie sind die nächste Generation von Open-Source-Modellen für große Sprachen, die von 01.AI von Grund auf trainiert wurden.
? Als zweisprachiges Sprachmodell konzipiert und auf dem mehrsprachigen 3T-Korpus trainiert, werden die Modelle der Yi-Serie zu einem der stärksten LLM weltweit und zeigen vielversprechende Ergebnisse in den Bereichen Sprachverständnis, vernünftiges Denken, Leseverständnis und mehr. Zum Beispiel,
Das Yi-34B-Chat-Modell landete auf dem zweiten Platz (nach GPT-4 Turbo) und übertraf andere LLMs (wie GPT-4, Mixtral, Claude) im AlpacaEval Leaderboard (basierend auf bis Januar 2024 verfügbaren Daten).
Das Yi-34B-Modell belegte in verschiedenen Benchmarks, darunter Hugging Face Open LLM Leaderboard (vorab trainiert) und C-Eval , den ersten Platz unter allen vorhandenen Open-Source-Modellen (wie Falcon-180B, Llama-70B, Claude) sowohl in Englisch als auch in Chinesisch (basierend auf den bis November 2023 verfügbaren Daten).
(Dank an Llama) Vielen Dank an die Open-Source-Communitys Transformer und Llama, da sie den Aufwand für die Erstellung von Grund auf reduzieren und die Nutzung derselben Tools innerhalb des KI-Ökosystems ermöglichen.
TL;DR
Die Modelle der Yi-Serie verwenden dieselbe Modellarchitektur wie Llama, sind jedoch KEINE Derivate von Llama.
Sowohl Yi als auch Llama basieren auf der Transformer-Struktur, die seit 2018 die Standardarchitektur für große Sprachmodelle ist.
Basierend auf der Transformer-Architektur ist Llama aufgrund seiner hervorragenden Stabilität, zuverlässigen Konvergenz und robusten Kompatibilität zu einem neuen Eckpfeiler für die meisten hochmodernen Open-Source-Modelle geworden. Dies positioniert Llama als anerkanntes Grundgerüst für Modelle, einschließlich Yi.
Dank der Transformer- und Llama-Architekturen können andere Modelle ihre Leistung nutzen, wodurch der Aufwand für den Aufbau von Grund auf reduziert wird und die Nutzung derselben Tools in ihren Ökosystemen ermöglicht wird.
Die Modelle der Yi-Serie sind jedoch KEINE Derivate von Llama, da sie nicht die Gewichte von Llama verwenden.
Da die Struktur von Llama von den meisten Open-Source-Modellen verwendet wird, sind Trainingsdatensätze, Trainingspipelines und Trainingsinfrastruktur die Schlüsselfaktoren für die Bestimmung der Modellleistung.
Yi hat auf einzigartige und proprietäre Weise entwickelt und von Grund auf unabhängig seine eigenen hochwertigen Trainingsdatensätze, effizienten Trainingspipelines und eine robuste Trainingsinfrastruktur erstellt. Diese Bemühungen haben zu einer hervorragenden Leistung geführt, wobei die Modelle der Yi-Serie im Dezember 2023 knapp hinter GPT4 rangierten und Llama in der Alpaka-Rangliste übertrafen.
[Zurück nach oben ⬆️]
Yi-9B-200K
ist Open-Source und für die Öffentlichkeit verfügbar.Yi-9B
ist Open-Source und für die Öffentlichkeit verfügbar.Yi-9B
sticht unter einer Reihe ähnlich großer Open-Source-Modelle (einschließlich Mistral-7B, SOLAR-10.7B, Gemma-7B, DeepSeek-Coder-7B-Base-v1.5 und mehr) als Spitzenreiter hervor. Besonders hervorzuheben sind Code, Mathematik, gesundes Denken und Leseverständnis.Yi-VL-34B
und Yi-VL-6B
sind Open-Source und für die Öffentlichkeit verfügbar.Yi-VL-34B
belegte in den neuesten Benchmarks, einschließlich MMMU und CMMMU, den ersten Platz unter allen vorhandenen Open-Source-Modellen (basierend auf bis Januar 2024 verfügbaren Daten).Yi-34B-Chat
Yi-34B-Chat-4bits
Yi-34B-Chat-8bits
Yi-6B-Chat
Yi-6B-Chat-4bits
Yi-6B-Chat-8bits
Einige davon können Sie interaktiv ausprobieren unter:
Yi-6B-200K
und Yi-34B-200K
sind Open-Source und für die Öffentlichkeit verfügbar.Yi-6B
und Yi-34B
sind Open-Source und für die Öffentlichkeit verfügbar.[Zurück nach oben ⬆️]
Yi-Modelle sind in verschiedenen Größen erhältlich und decken unterschiedliche Anwendungsfälle ab. Sie können Yi-Modelle auch an Ihre spezifischen Anforderungen anpassen.
Wenn Sie Yi-Modelle einsetzen möchten, stellen Sie sicher, dass Sie die Software- und Hardwareanforderungen erfüllen.
Modell | Herunterladen |
---|---|
Yi-34B-Chat | • ? Umarmendes Gesicht • ? ModelScope • ? kluges Modell |
Yi-34B-Chat-4bits | • ? Umarmendes Gesicht • ? ModelScope • ? kluges Modell |
Yi-34B-Chat-8bits | • ? Umarmendes Gesicht • ? ModelScope • ? kluges Modell |
Yi-6B-Chat | • ? Umarmendes Gesicht • ? ModelScope • ? kluges Modell |
Yi-6B-Chat-4bits | • ? Umarmendes Gesicht • ? ModelScope • ? kluges Modell |
Yi-6B-Chat-8bits | • ? Umarmendes Gesicht • ? ModelScope • ? kluges Modell |
- 4-Bit-Serienmodelle werden durch AWQ quantisiert.
- 8-Bit-Serienmodelle werden durch GPTQ quantisiert
- Alle quantisierten Modelle weisen eine geringe Nutzungsbarriere auf, da sie auf GPUs der Verbraucherklasse (z. B. 3090, 4090) eingesetzt werden können.
Modell | Herunterladen |
---|---|
Yi-34B | • ? Umarmendes Gesicht • ? ModelScope • ? kluges Modell |
Yi-34B-200K | • ? Umarmendes Gesicht • ? ModelScope • ? kluges Modell |
Yi-9B | • ? Umarmendes Gesicht • ? ModelScope • ? kluges Modell |
Yi-9B-200K | • ? Umarmendes Gesicht • ? ModelScope • ? kluges Modell |
Yi-6B | • ? Umarmendes Gesicht • ? ModelScope • ? kluges Modell |
Yi-6B-200K | • ? Umarmendes Gesicht • ? ModelScope • ? kluges Modell |
- 200.000 entsprechen ungefähr 400.000 chinesischen Schriftzeichen.
– Wenn Sie die frühere Version des Yi-34B-200K (veröffentlicht am 5. November 2023) verwenden möchten, führen Sie git checkout 069cd341d60f4ce4b07ec394e82b79e94f656cf
aus, um das Gewicht herunterzuladen.
Modell | Einführung | Standardkontextfenster | Vorab trainierte Token | Datum der Trainingsdaten |
---|---|---|---|---|
Modelle der 6B-Serie | Sie sind für den persönlichen und akademischen Gebrauch geeignet. | 4K | 3T | Bis Juni 2023 |
Modelle der 9B-Serie | Es ist das Beste in den Bereichen Codierung und Mathematik unter den Modellen der Yi-Serie. | Yi-9B wird kontinuierlich auf Basis von Yi-6B unter Verwendung von 0,8T-Tokens trainiert. | ||
Modelle der 34B-Serie | Sie eignen sich für persönliche, akademische und kommerzielle (insbesondere für kleine und mittlere Unternehmen) Zwecke. Es handelt sich um eine kostengünstige Lösung, die erschwinglich und mit aufstrebenden Fähigkeiten ausgestattet ist. | 3T |
Für Chat-Models
Diese größere Vielfalt könnte jedoch bestimmte bestehende Probleme verstärken, darunter:
[Zurück nach oben ⬆️]
Tipp : Wenn Sie mit dem Yi-Modell beginnen und verschiedene Inferenzmethoden erkunden möchten, schauen Sie sich das Yi-Kochbuch an.
Wählen Sie einen der folgenden Wege, um Ihre Reise mit Yi zu beginnen!
Wenn Sie Yi-Modelle lieber lokal bereitstellen möchten,
?♀️ und Sie über ausreichende Ressourcen verfügen (z. B. NVIDIA A800 80 GB), können Sie eine der folgenden Methoden wählen:
?♀️ und Sie über begrenzte Ressourcen verfügen (z. B. ein MacBook Pro), können Sie llama.cpp verwenden.
Wenn Sie Yi-Modelle lieber nicht lokal bereitstellen möchten, können Sie die Fähigkeiten von Yi mithilfe einer der folgenden Optionen erkunden.
Wenn Sie weitere Funktionen von Yi erkunden möchten, können Sie eine dieser Methoden anwenden:
Yi APIs (Yi offiziell)
Yi-APIs (Replizieren)
Wenn Sie mit Yi mit anpassbareren Optionen chatten möchten (z. B. Systemaufforderung, Temperatur, Wiederholungsstrafe usw.), können Sie eine der folgenden Optionen ausprobieren:
Yi-34B-Chat-Playground (Yi-Beamter)
Yi-34B-Chat-Playground (Replikat)
Wenn Sie mit Yi chatten möchten, können Sie einen dieser Online-Dienste nutzen, die ein ähnliches Benutzererlebnis bieten:
Yi-34B-Chat (Yi-Beamter bei Hugging Face)
Yi-34B-Chat (offizielle Yi-Beta)
[Zurück nach oben ⬆️]
Dieses Tutorial führt Sie durch jeden Schritt der lokalen Ausführung von Yi-34B-Chat auf einem A800 (80G) und der anschließenden Durchführung der Inferenz.
Stellen Sie sicher, dass Python 3.10 oder eine neuere Version installiert ist.
Wenn Sie andere Yi-Modelle verwenden möchten, sehen Sie sich die Software- und Hardwareanforderungen an.
Führen Sie den folgenden Befehl aus, um die Umgebung einzurichten und die erforderlichen Pakete zu installieren.
git clone https://github.com/01-ai/Yi.git
cd yi
pip install -r requirements.txt
Sie können die Gewichte und den Tokenizer von Yi-Modellen aus den folgenden Quellen herunterladen:
Sie können wie folgt Rückschlüsse mit Yi-Chat oder Basismodellen ziehen.
Erstellen Sie eine Datei mit dem Namen quick_start.py
und kopieren Sie den folgenden Inhalt hinein.
from transformers import AutoModelForCausalLM , AutoTokenizer
model_path = '<your-model-path>'
tokenizer = AutoTokenizer . from_pretrained ( model_path , use_fast = False )
# Since transformers 4.35.0, the GPT-Q/AWQ model can be loaded using AutoModelForCausalLM.
model = AutoModelForCausalLM . from_pretrained (
model_path ,
device_map = "auto" ,
torch_dtype = 'auto'
). eval ()
# Prompt content: "hi"
messages = [
{ "role" : "user" , "content" : "hi" }
]
input_ids = tokenizer . apply_chat_template ( conversation = messages , tokenize = True , add_generation_prompt = True , return_tensors = 'pt' )
output_ids = model . generate ( input_ids . to ( 'cuda' ))
response = tokenizer . decode ( output_ids [ 0 ][ input_ids . shape [ 1 ]:], skip_special_tokens = True )
# Model response: "Hello! How can I assist you today?"
print ( response )
Führen Sie quick_start.py
aus.
python quick_start.py
Dann sehen Sie eine Ausgabe ähnlich der folgenden. ?
Hello ! How can I assist you today ?
Yi-34B
Die Schritte ähneln pip – Führen Sie eine Inferenz mit dem Yi-Chat-Modell durch.
Sie können die vorhandene Datei text_generation.py
verwenden.
python demo/text_generation.py --model < your-model-path >
Dann sehen Sie eine Ausgabe ähnlich der folgenden. ?
Aufforderung : Lassen Sie mich Ihnen eine interessante Geschichte über Katze Tom und Maus Jerry erzählen.
Generation : Lassen Sie mich Ihnen eine interessante Geschichte über Katze Tom und Maus Jerry erzählen, die sich in meiner Kindheit ereignete. Mein Vater hatte ein großes Haus, in dem zwei Katzen lebten, um Mäuse zu töten. Eines Tages, als ich alleine zu Hause spielte, fand ich einen der Kater auf dem Rücken in der Nähe unserer Küchentür liegen und sah aus, als wollte er etwas von uns, konnte aber nicht aufstehen, weil zu viele Leute um ihn herum waren! Er versuchte es mehrere Minuten lang, bevor er schließlich aufgab ...
Yi-9B
Eingang
from transformers import AutoModelForCausalLM, AutoTokenizer
MODEL_DIR = " 01-ai/Yi-9B "
model = AutoModelForCausalLM.from_pretrained(MODEL_DIR, torch_dtype= " auto " )
tokenizer = AutoTokenizer.from_pretrained(MODEL_DIR, use_fast=False)
input_text = " # write the quick sort algorithm "
inputs = tokenizer(input_text, return_tensors= " pt " ).to(model.device)
outputs = model.generate( ** inputs, max_length=256)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
Ausgabe
# write the quick sort algorithm
def quick_sort(arr):
if len(arr) < = 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
# test the quick sort algorithm
print(quick_sort([3, 6, 8, 10, 1, 2, 1]))
[Zurück nach oben ⬆️]
Stellen Sie sicher, dass Sie Docker und nvidia-container-toolkit installiert haben.
docker run -it --gpus all
-v <your-model-path>: /models
ghcr.io/01-ai/yi:latest
Alternativ können Sie das Yi-Docker-Image von registry.lingyiwanwu.com/ci/01-ai/yi:latest
abrufen.
Sie können wie folgt Rückschlüsse mit Yi-Chat oder Basismodellen ziehen.
Die Schritte ähneln pip – Führen Sie eine Inferenz mit dem Yi-Chat-Modell durch.
Beachten Sie , dass der einzige Unterschied darin besteht model_path = '<your-model-mount-path>'
anstelle von model_path = '<your-model-path>'
festzulegen.
Die Schritte ähneln pip – Führen Sie eine Inferenz mit dem Yi-Basismodell durch.
Beachten Sie , dass der einzige Unterschied darin besteht, --model <your-model-mount-path>'
anstelle von model <your-model-path>
festzulegen.
conda-lock
können Sie vollständig reproduzierbare Sperrdateien für Conda-Umgebungen generieren.micromamba
zum Installieren dieser Abhängigkeiten verwenden.Installieren Sie micromamba, indem Sie den hier verfügbaren Anweisungen folgen.
Führen Sie micromamba install -y -n yi -f conda-lock.yml
aus, um eine Conda-Umgebung mit dem Namen yi
zu erstellen und die erforderlichen Abhängigkeiten zu installieren.
Das folgende Tutorial führt Sie durch jeden Schritt der lokalen Ausführung eines quantisierten Modells (Yi-chat-6B-2bits) und der anschließenden Inferenzdurchführung.
In diesem Tutorial wird davon ausgegangen, dass Sie ein MacBook Pro mit 16 GB Speicher und einem Apple M2 Pro-Chip verwenden.
Stellen Sie sicher, dass git-lfs
auf Ihrem Computer installiert ist.
llama.cpp
herunter Führen Sie den folgenden Befehl aus, um das llama.cpp
-Repository zu klonen.
git clone [email protected]:ggerganov/llama.cpp.git
2.1 Um XeIaso/yi-chat-6B-GGUF nur mit Zeigern zu klonen, führen Sie den folgenden Befehl aus.
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/XeIaso/yi-chat-6B-GGUF
2.2 Um ein quantisiertes Yi-Modell (yi-chat-6b.Q2_K.gguf) herunterzuladen, führen Sie den folgenden Befehl aus.
git-lfs pull --include yi-chat-6b.Q2_K.gguf
Um eine Inferenz mit dem Yi-Modell durchzuführen, können Sie eine der folgenden Methoden verwenden.
Methode 1: Inferenz im Terminal durchführen
Methode 2: Inferenz im Web durchführen
Um llama.cpp
mit 4 Threads zu kompilieren und dann eine Inferenz durchzuführen, navigieren Sie zum Verzeichnis llama.cpp
und führen Sie den folgenden Befehl aus.
Tipps
Ersetzen Sie
/Users/yu/yi-chat-6B-GGUF/yi-chat-6b.Q2_K.gguf
durch den tatsächlichen Pfad Ihres Modells.Standardmäßig arbeitet das Modell im Vervollständigungsmodus.
Für zusätzliche Ausgabeanpassungsoptionen (z. B. Systemaufforderung, Temperatur, Wiederholungsstrafe usw.) führen Sie
./main -h
aus, um detaillierte Beschreibungen und Verwendung zu überprüfen.
make -j4 && ./main -m /Users/yu/yi-chat-6B-GGUF/yi-chat-6b.Q2_K.gguf -p " How do you feed your pet fox? Please answer this question in 6 simple steps:nStep 1: " -n 384 -e
...
How do you feed your pet fox ? Please answer this question in 6 simple steps:
Step 1: Select the appropriate food for your pet fox. You should choose high-quality, balanced prey items that are suitable for their unique dietary needs. These could include live or frozen mice, rats, pigeons, or other small mammals, as well as fresh fruits and vegetables.
Step 2: Feed your pet fox once or twice a day, depending on the species and its individual preferences. Always ensure that they have access to fresh water throughout the day.
Step 3: Provide an appropriate environment for your pet fox. Ensure it has a comfortable place to rest, plenty of space to move around, and opportunities to play and exercise.
Step 4: Socialize your pet with other animals if possible. Interactions with other creatures can help them develop social skills and prevent boredom or stress.
Step 5: Regularly check for signs of illness or discomfort in your fox. Be prepared to provide veterinary care as needed, especially for common issues such as parasites, dental health problems, or infections.
Step 6: Educate yourself about the needs of your pet fox and be aware of any potential risks or concerns that could affect their well-being. Regularly consult with a veterinarian to ensure you are providing the best care.
...
Jetzt haben Sie erfolgreich eine Frage an das Yi-Modell gestellt und eine Antwort erhalten! ?
Führen Sie den folgenden Befehl aus, um einen einfachen und schnellen Chatbot zu initialisieren.
cd llama.cpp
./server --ctx-size 2048 --host 0.0.0.0 --n-gpu-layers 64 --model /Users/yu/yi-chat-6B-GGUF/yi-chat-6b.Q2_K.gguf
Dann können Sie eine Ausgabe wie diese erhalten:
...
llama_new_context_with_model: n_ctx = 2048
llama_new_context_with_model: freq_base = 5000000.0
llama_new_context_with_model: freq_scale = 1
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M2 Pro
ggml_metal_init: picking default device: Apple M2 Pro
ggml_metal_init: ggml.metallib not found, loading from source
ggml_metal_init: GGML_METAL_PATH_RESOURCES = nil
ggml_metal_init: loading ' /Users/yu/llama.cpp/ggml-metal.metal '
ggml_metal_init: GPU name: Apple M2 Pro
ggml_metal_init: GPU family: MTLGPUFamilyApple8 (1008)
ggml_metal_init: hasUnifiedMemory = true
ggml_metal_init: recommendedMaxWorkingSetSize = 11453.25 MB
ggml_metal_init: maxTransferRate = built-in GPU
ggml_backend_metal_buffer_type_alloc_buffer: allocated buffer, size = 128.00 MiB, ( 2629.44 / 10922.67)
llama_new_context_with_model: KV self size = 128.00 MiB, K (f16): 64.00 MiB, V (f16): 64.00 MiB
ggml_backend_metal_buffer_type_alloc_buffer: allocated buffer, size = 0.02 MiB, ( 2629.45 / 10922.67)
llama_build_graph: non-view tensors processed: 676/676
llama_new_context_with_model: compute buffer total size = 159.19 MiB
ggml_backend_metal_buffer_type_alloc_buffer: allocated buffer, size = 156.02 MiB, ( 2785.45 / 10922.67)
Available slots:
- > Slot 0 - max context: 2048
llama server listening at http://0.0.0.0:8080
Um auf die Chatbot-Oberfläche zuzugreifen, öffnen Sie Ihren Webbrowser und geben Sie http://0.0.0.0:8080
in die Adressleiste ein.
Geben Sie in das Eingabeaufforderungsfenster eine Frage ein, z. B. „Wie füttern Sie Ihren Haustierfuchs? Bitte beantworten Sie diese Frage in 6 einfachen Schritten“, und Sie erhalten eine entsprechende Antwort.
[Zurück nach oben ⬆️]
Sie können eine Web-UI-Demo für Yi -Chat- Modelle erstellen (beachten Sie, dass Yi-Basismodelle in diesem Szenario nicht unterstützt werden).
Schritt 1: Bereiten Sie Ihre Umgebung vor.
Schritt 2: Laden Sie das Yi-Modell herunter.
Schritt 3: Um einen Webdienst lokal zu starten, führen Sie den folgenden Befehl aus.
python demo/web_demo.py -c < your-model-path >
Sie können auf die Web-Benutzeroberfläche zugreifen, indem Sie die in der Konsole angegebene Adresse in Ihren Browser eingeben.
[Zurück nach oben ⬆️]
bash finetune/scripts/run_sft_Yi_6b.sh
Sobald Sie fertig sind, können Sie das feinabgestimmte Modell und das Basismodell mit dem folgenden Befehl vergleichen:
bash finetune/scripts/run_eval.sh
Standardmäßig verwenden wir einen kleinen Datensatz von BAAI/COIG, um das Basismodell zu verfeinern. Sie können Ihren benutzerdefinierten Datensatz auch im folgenden jsonl
-Format vorbereiten:
{ "prompt" : " Human: Who are you? Assistant: " , "chosen" : " I'm Yi. " }
Und hängen Sie sie dann im Container ein, um die Standardversionen zu ersetzen:
docker run -it
-v /path/to/save/finetuned/model/:/finetuned-model
-v /path/to/train.jsonl:/yi/finetune/data/train.json
-v /path/to/eval.jsonl:/yi/finetune/data/eval.json
ghcr.io/01-ai/yi:latest
bash finetune/scripts/run_sft_Yi_6b.sh
Stellen Sie sicher, dass Sie Conda haben. Wenn nicht, verwenden Sie
mkdir -p ~ /miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~ /miniconda3/miniconda.sh
bash ~ /miniconda3/miniconda.sh -b -u -p ~ /miniconda3
rm -rf ~ /miniconda3/miniconda.sh
~ /miniconda3/bin/conda init bash
source ~ /.bashrc
Erstellen Sie dann eine Conda-Umgebung:
conda create -n dev_env python=3.10 -y
conda activate dev_env
pip install torch==2.0.1 deepspeed==0.10 tensorboard transformers datasets sentencepiece accelerate ray==2.7
Für das Yi-6B-Modell wird ein Knoten mit 4 GPUs mit jeweils mehr als 60 GB GPU-Speicher empfohlen.
Da die Verwendung der Zero-Offload-Technik beim Yi-34B-Modell viel CPU-Speicher verbraucht, achten Sie bitte darauf, die Anzahl der GPUs im 34B-Feinabstimmungstraining zu begrenzen. Bitte verwenden Sie CUDA_VISIBLE_DEVICES, um die Anzahl der GPUs zu begrenzen (wie in scripts/run_sft_Yi_34b.sh gezeigt).
Ein typisches Hardware-Setup zur Feinabstimmung des 34B-Modells ist ein Knoten mit 8 GPUs (im Betrieb durch CUDA_VISIBLE_DEVICES=0,1,2,3 auf 4 begrenzt), jede mit einem GPU-Speicher von mehr als 80 GB und einem gesamten CPU-Speicher von mehr als 900 GB.
Laden Sie ein LLM-Basismodell in MODEL_PATH (6B und 34B) herunter. Ein typischer Modellordner sieht wie folgt aus:
| -- $MODEL_PATH
| | -- config.json
| | -- pytorch_model-00001-of-00002.bin
| | -- pytorch_model-00002-of-00002.bin
| | -- pytorch_model.bin.index.json
| | -- tokenizer_config.json
| | -- tokenizer.model
| | -- ...
Laden Sie einen Datensatz von Huggingface in den lokalen Speicher DATA_PATH herunter, z. B. Dahoas/rm-static.
| -- $DATA_PATH
| | -- data
| | | -- train-00000-of-00001-2a1df75c6bce91ab.parquet
| | | -- test-00000-of-00001-8c7c51afc6d45980.parquet
| | -- dataset_infos.json
| | -- README.md
finetune/yi_example_dataset
enthält Beispieldatensätze, die von BAAI/COIG geändert wurden
| -- $DATA_PATH
| --data
| -- train.jsonl
| -- eval.jsonl
cd
in den Skriptordner, kopieren Sie das Skript, fügen Sie es ein und führen Sie es aus. Zum Beispiel:
cd finetune/scripts
bash run_sft_Yi_6b.sh
Für das Yi-6B-Basismodell kann durch Einstellen von training_debug_steps=20 und num_train_epochs=4 ein Chat-Modell ausgegeben werden, das etwa 20 Minuten dauert.
Beim Basismodell Yi-34B dauert die Initialisierung relativ lange. Bitte haben Sie etwas Geduld.
cd finetune/scripts
bash run_eval.sh
Dann sehen Sie die Antwort sowohl des Basismodells als auch des feinabgestimmten Modells.
[Zurück nach oben ⬆️]
python quantization/gptq/quant_autogptq.py
--model /base_model
--output_dir /quantized_model
--trust_remote_code
Sobald Sie fertig sind, können Sie das resultierende Modell wie folgt bewerten:
python quantization/gptq/eval_quantized_model.py
--model /quantized_model
--trust_remote_code
GPT-Q ist eine PTQ-Methode (Post-Training Quantization). Es spart Speicher und ermöglicht potenzielle Beschleunigungen, während die Genauigkeit des Modells erhalten bleibt.
Yi-Modelle können ohne großen Aufwand mit GPT-Q quantisiert werden. Nachfolgend finden Sie eine Schritt-für-Schritt-Anleitung.
Um GPT-Q auszuführen, verwenden wir AutoGPTQ und exllama. Und die Huggingface-Transformatoren haben Optimum und Auto-GPTQ integriert, um eine GPTQ-Quantisierung an Sprachmodellen durchzuführen.
Für die Durchführung der GPT-Q-Quantisierung steht Ihnen das Skript quant_autogptq.py
zur Verfügung:
python quant_autogptq.py --model /base_model
--output_dir /quantized_model --bits 4 --group_size 128 --trust_remote_code
Sie können ein quantisiertes Modell mit eval_quantized_model.py
ausführen:
python eval_quantized_model.py --model /quantized_model --trust_remote_code
python quantization/awq/quant_autoawq.py
--model /base_model
--output_dir /quantized_model
--trust_remote_code
Sobald Sie fertig sind, können Sie das resultierende Modell wie folgt bewerten:
python quantization/awq/eval_quantized_model.py
--model /quantized_model
--trust_remote_code
AWQ ist eine PTQ-Methode (Post-Training Quantization). Es handelt sich um eine effiziente und genaue Low-Bit-Weight-Quantisierung (INT3/4) für LLMs.
Yi-Modelle können ohne großen Aufwand AWQ-quantisiert werden. Nachfolgend finden Sie eine Schritt-für-Schritt-Anleitung.
Um AWQ auszuführen, verwenden wir AutoAWQ.
Für die AWQ-Quantisierung steht Ihnen das Skript quant_autoawq.py
zur Verfügung:
python quant_autoawq.py --model /base_model
--output_dir /quantized_model --bits 4 --group_size 128 --trust_remote_code
Sie können ein quantisiertes Modell mit eval_quantized_model.py
ausführen:
python eval_quantized_model.py --model /quantized_model --trust_remote_code
[Zurück nach oben ⬆️]
Wenn Sie Yi-Modelle einsetzen möchten, stellen Sie sicher, dass Sie die Software- und Hardwareanforderungen erfüllen.
Bevor Sie Yi-quantisierte Modelle verwenden, stellen Sie sicher, dass Sie die unten aufgeführte richtige Software installiert haben.
Modell | Software |
---|---|
Yi 4-Bit quantisierte Modelle | AWQ und CUDA |
Yi 8-Bit quantisierte Modelle | GPTQ und CUDA |
Stellen Sie vor der Bereitstellung von Yi in Ihrer Umgebung sicher, dass Ihre Hardware die folgenden Anforderungen erfüllt.
Modell | Minimaler VRAM | Empfohlenes GPU-Beispiel |
---|---|---|
Yi-6B-Chat | 15 GB | 1 x RTX 3090 (24 GB) 1 x RTX 4090 (24 GB) 1 x A10 (24 GB) 1 x A30 (24 GB) |
Yi-6B-Chat-4bits | 4 GB | 1 x RTX 3060 (12 GB) 1 x RTX 4060 (8 GB) |
Yi-6B-Chat-8bits | 8 GB | 1 x RTX 3070 (8 GB) 1 x RTX 4060 (8 GB) |
Yi-34B-Chat | 72 GB | 4 x RTX 4090 (24 GB) 1 x A800 (80 GB) |
Yi-34B-Chat-4bits | 20 GB | 1 x RTX 3090 (24 GB) 1 x RTX 4090 (24 GB) 1 x A10 (24 GB) 1 x A30 (24 GB) 1 x A100 (40 GB) |
Yi-34B-Chat-8bits | 38 GB | 2 x RTX 3090 (24 GB) 2 x RTX 4090 (24 GB) 1 x A800 (40 GB) |
Nachfolgend finden Sie detaillierte Mindestanforderungen an VRAM für verschiedene Batch-Anwendungsfälle.
Modell | Charge=1 | Charge=4 | Charge=16 | Charge=32 |
---|---|---|---|---|
Yi-6B-Chat | 12 GB | 13 GB | 15 GB | 18 GB |
Yi-6B-Chat-4bits | 4 GB | 5 GB | 7 GB | 10 GB |
Yi-6B-Chat-8bits | 7 GB | 8 GB | 10 GB | 14 GB |
Yi-34B-Chat | 65 GB | 68 GB | 76 GB | > 80 GB |
Yi-34B-Chat-4bits | 19 GB | 20 GB | 30 GB | 40 GB |
Yi-34B-Chat-8bits | 35 GB | 37 GB | 46 GB | 58 GB |
Modell | Minimaler VRAM | Empfohlenes GPU-Beispiel |
---|---|---|
Yi-6B | 15 GB | 1 x RTX 3090 (24 GB) 1 x RTX 4090 (24 GB) 1 x A10 (24 GB) 1 x A30 (24 GB) |
Yi-6B-200K | 50 GB | 1 x A800 (80 GB) |
Yi-9B | 20 GB | 1 x RTX 4090 (24 GB) |
Yi-34B | 72 GB | 4 x RTX 4090 (24 GB) 1 x A800 (80 GB) |
Yi-34B-200K | 200 GB | 4 x A800 (80 GB) |
[Zurück nach oben ⬆️]
Yi-34B
und Yi-34B-Chat
liegt im Feinabstimmungsansatz und den Ergebnissen.Yi-34B
Ihre erste Wahl sein.Yi-34B-Chat
möglicherweise die beste Wahl.