Deepseeks bahnbrechende KI -Models fordern Openais Dominanz heraus. Diese fortgeschrittenen Argumentationsmodelle sind frei verfügbar und demokratisieren den Zugang zu mächtiger KI. Erfahren Sie, wie Sie Deepseek mit unserem Video-Tutorial einstellen:
Dieses Tutorial-Fein-Tunes Das Deepseek-R1-Distill-Llama-8b-Modell unter Verwendung des umarmenden Datensatzes für medizinische Kettenkette. Dieses destillierte Modell, das aus Lama 3.1 8b abgeleitet ist, bietet vergleichbare Argumentationsfunktionen mit dem ursprünglichen Deepseek-R1. Neu bei LLMs und Feinabstimmung? Betrachten Sie unsere Einführung in LLMs im Python -Kurs.
Bild vom Autor
Deepseek AI hat Deepseek-R1 und Deepseek-R1-Null Opensures O1 in Argumentationsaufgaben (Mathematik, Codierung, Logik) mit OpenAs O1 mithalten. Entdecken Sie unseren umfassenden Deepseek R1 -Leitfaden für Details.
Dieses Pioniermodell verwendet groß angelegte Verstärkungslernen (RL), wobei die anfängliche beaufsichtigte Feinabstimmung (SFT) umgangen wird. Während der Ermöglichung der unabhängigen Argumentation des Gedankenketten (COT) ist es Herausforderungen wie sich wiederholende Argumentation und Lesbarkeitsprobleme.
Die Grenzen von Deepseek-R1-Zero adressiert Deepseek-R1 und enthält Kaltstart-Daten vor RL. Dieses mehrstufige Training erzielt eine modernste Leistung, die OpenAI-O1 entspricht und gleichzeitig die Ausgangsklarheit verbessert.
Deepseek bietet auch destillierte Modelle an, die Kraft und Effizienz ausbalancieren. Diese kleineren Modelle (1,5B bis 70B-Parameter) behalten starke Argumentation bei, wobei Deepseek-R1-Distill-Qwen-32B OpenAI-O1-Mini in Benchmarks übertrifft. Dies unterstreicht die Wirksamkeit des Destillationsprozesses.
Quelle: Deepseek-AI/Deepseek-R1
Erfahren Sie mehr über die Funktionen von Deepseek-R1, die Entwicklung, die destillierten Modelle, den Zugriff, die Preise und den OpenAI-O1-Vergleich in unserem Blog-Beitrag: "Deepseek-R1: Features, O1-Vergleich, destillierte Modelle und mehr".
Befolgen Sie diese Schritte, um Ihr Deekseek R1-Modell zu optimieren:
Wir verwenden Kaggle's kostenlosen GPU -Zugriff. Erstellen Sie ein Kaggle -Notizbuch und fügen Sie Ihr umarmendes Gesicht und Ihre Gewichte und Verzerrungen als Geheimnisse hinzu. Installieren Sie das Python-Paket unsloth
für schnellere und speichereffizientere Feinabstimmungen. Weitere Informationen finden Sie in unserem "Unloth Guide: Optimieren und beschleunigen Sie die Feinabstimmung von LLM".
<code>%%capture !pip install unsloth !pip install --force-reinstall --no-cache-dir --no-deps git+https://github.com/unslothai/unsloth.git</code>
authentifizieren mit der umarmenden Gesichts -CLI und Gewichten & Vorurteilen (Wandb):
<code>from huggingface_hub import login from kaggle_secrets import UserSecretsClient user_secrets = UserSecretsClient() hf_token = user_secrets.get_secret("HUGGINGFACE_TOKEN") login(hf_token) import wandb wb_token = user_secrets.get_secret("wandb") wandb.login(key=wb_token) run = wandb.init( project='Fine-tune-DeepSeek-R1-Distill-Llama-8B on Medical COT Dataset', job_type="training", anonymous="allow" )</code>
Laden Sie die Unloth-Version von Deepseek-R1-Distill-Llama-8b mit 4-Bit-Quantisierung für eine optimierte Leistung:
Laden Sie:<code>from unsloth import FastLanguageModel max_seq_length = 2048 dtype = None load_in_4bit = True model, tokenizer = FastLanguageModel.from_pretrained( model_name = "unsloth/DeepSeek-R1-Distill-Llama-8B", max_seq_length = max_seq_length, dtype = dtype, load_in_4bit = load_in_4bit, token = hf_token, )</code>
Definieren Sie einen schnellen Stil mit Platzhaltern für die Frage und Antwort. Dies führt die schrittweise Argumentation des Modells:
<code>prompt_style = """Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request. Before answering, think carefully about the question and create a step-by-step chain of thoughts to ensure a logical and accurate response. ### Instruction: You are a medical expert with advanced knowledge in clinical reasoning, diagnostics, and treatment planning. Please answer the following medical question. ### Question: {} ### Response: <think>{}"""</think></code>
Testen Sie das Modell mit einer Beispiele für medizinische Frage:
<code>question = "A 61-year-old woman with a long history of involuntary urine loss during activities like coughing or sneezing but no leakage at night undergoes a gynecological exam and Q-tip test. Based on these findings, what would cystometry most likely reveal about her residual volume and detrusor contractions?" FastLanguageModel.for_inference(model) inputs = tokenizer([prompt_style.format(question, "")], return_tensors="pt").to("cuda") outputs = model.generate( input_ids=inputs.input_ids, attention_mask=inputs.attention_mask, max_new_tokens=1200, use_cache=True, ) response = tokenizer.batch_decode(outputs) print(response[0].split("### Response:")[1])</code>
Beobachten Sie das Argument vor dem Finanzabbau des Modells und identifizieren Sie Verbesserungsbereiche durch Feinabstimmung.
Ändern Sie den schnellen Stil, um einen Platzhalter für die komplexe Denkkette einzuschließen:
<code>train_prompt_style = """Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request. Before answering, think carefully about the question and create a step-by-step chain of thoughts to ensure a logical and accurate response. ### Instruction: You are a medical expert with advanced knowledge in clinical reasoning, diagnostics, and treatment planning. Please answer the following medical question. ### Question: {} ### Response: <think> {} </think> {}"""</code>
Erstellen Sie eine Funktion, um den Datensatz zu formatieren:
<code>EOS_TOKEN = tokenizer.eos_token # Must add EOS_TOKEN def formatting_prompts_func(examples): inputs = examples["Question"] cots = examples["Complex_CoT"] outputs = examples["Response"] texts = [] for input, cot, output in zip(inputs, cots, outputs): text = train_prompt_style.format(input, cot, output) + EOS_TOKEN texts.append(text) return { "text": texts, }</code>
Laden und verarbeiten Sie den Datensatz:
<code>from datasets import load_dataset dataset = load_dataset("FreedomIntelligence/medical-o1-reasoning-SFT","en", split = "train[0:500]",trust_remote_code=True) dataset = dataset.map(formatting_prompts_func, batched = True,) dataset["text"][0]</code>
Konfigurieren Sie das Modell mit LORA:
<code>model = FastLanguageModel.get_peft_model( model, r=16, target_modules=[ "q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj", ], lora_alpha=16, lora_dropout=0, bias="none", use_gradient_checkpointing="unsloth", # True or "unsloth" for very long context random_state=3407, use_rslora=False, loftq_config=None, )</code>
Richten Sie den Trainer ein:
<code>from trl import SFTTrainer from transformers import TrainingArguments from unsloth import is_bfloat16_supported trainer = SFTTrainer( model=model, tokenizer=tokenizer, train_dataset=dataset, dataset_text_field="text", max_seq_length=max_seq_length, dataset_num_proc=2, args=TrainingArguments( per_device_train_batch_size=2, gradient_accumulation_steps=4, # Use num_train_epochs = 1, warmup_ratio for full training runs! warmup_steps=5, max_steps=60, learning_rate=2e-4, fp16=not is_bfloat16_supported(), bf16=is_bfloat16_supported(), logging_steps=10, optim="adamw_8bit", weight_decay=0.01, lr_scheduler_type="linear", seed=3407, output_, ), )</code>
trainieren Sie das Modell:
<code>trainer_stats = trainer.train()</code>
(Hinweis: Die ursprüngliche Antwort enthielt Bilder des Trainingsfortschritts; diese werden hier weggelassen, da die Bildreproduktion nicht möglich ist.)
Vergleichen Sie die Ergebnisse, indem Sie das fein abgestimmte Modell mit derselben Frage wie zuvor abfragen. Beobachten Sie die Verbesserung des Argumentations- und Reaktionszustands.
(Hinweis: Die ursprüngliche Antwort enthielt die verbesserte Modellausgabe; Dies wird hier für die Kürze weggelassen.)
Speichern Sie das Modell lokal und schieben Sie es auf den umarmenden Gesichtszentrum:
<code>new_model_local = "DeepSeek-R1-Medical-COT" model.save_pretrained(new_model_local) tokenizer.save_pretrained(new_model_local) model.save_pretrained_merged(new_model_local, tokenizer, save_method = "merged_16bit",) new_model_online = "kingabzpro/DeepSeek-R1-Medical-COT" model.push_to_hub(new_model_online) tokenizer.push_to_hub(new_model_online) model.push_to_hub_merged(new_model_online, tokenizer, save_method = "merged_16bit")</code>
(Hinweis: Die ursprüngliche Antwort enthielt Bilder, die erfolgreiches Modell speichern und pushen; diese werden hier weggelassen.)
Das Tutorial schließt ab, indem die Bereitstellungsoptionen mithilfe von Bentoml oder lokaler Konvertierung in das GGUF -Format vorgeschlagen werden. Es betont die wachsende Bedeutung von Open-Source-LLMs und zeigt OpenAIs Gegenbewegungen mit O3 und Operator AI. Die Links zu diesen Ressourcen sind erhalten.
Die umgeschriebene Antwort behält die Kerninformationen bei, während die Struktur vereinfacht und unnötige Wiederholungen entfernt werden. Die Codeblöcke werden zur Vollständigkeit zurückgehalten. Die Bilder werden referenziert, aber nicht reproduziert.
Das obige ist der detaillierte Inhalt vonFeinabstimmung Deepseek R1 (Argumentationsmodell). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!