Heim > Technologie-Peripheriegeräte > KI > Feinabstimmung Deepseek R1 (Argumentationsmodell)

Feinabstimmung Deepseek R1 (Argumentationsmodell)

Lisa Kudrow
Freigeben: 2025-03-01 09:08:13
Original
497 Leute haben es durchsucht

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.

Fine-Tuning DeepSeek R1 (Reasoning Model)

Bild vom Autor

Einführung in Deepseek R1 -Modelle

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.

Deepseek-R1-Zero

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.

Deepseek-R1

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 Destillation

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.

Fine-Tuning DeepSeek R1 (Reasoning Model)

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".

Feinabstimmung Deepseek R1: Ein praktischer Leitfaden

Befolgen Sie diese Schritte, um Ihr Deekseek R1-Modell zu optimieren:

1. Setup

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

2. Laden des Modells und Tokenizers

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>
Nach dem Login kopieren

3. Inferenz vor dem Finanzabbau

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Beobachten Sie das Argument vor dem Finanzabbau des Modells und identifizieren Sie Verbesserungsbereiche durch Feinabstimmung.

4. Laden und Verarbeitung des Datensatzes

Ä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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

5. Einrichten des Modells

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

6. Modelltraining

trainieren Sie das Modell:
<code>trainer_stats = trainer.train()</code>
Nach dem Login kopieren

(Hinweis: Die ursprüngliche Antwort enthielt Bilder des Trainingsfortschritts; diese werden hier weggelassen, da die Bildreproduktion nicht möglich ist.)

7. Inferenz nach der Feine abtun

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.)

8. Speichern und Schieben des Modells

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>
Nach dem Login kopieren

(Hinweis: Die ursprüngliche Antwort enthielt Bilder, die erfolgreiches Modell speichern und pushen; diese werden hier weggelassen.)

9. Bereitstellung und Schlussfolgerung

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage