{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "🦥 Unsloth: Will patch your computer to enable 2x faster free finetuning.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\sbtwc\\.conda\\envs\\unsloth_env\\Lib\\site-packages\\tqdm\\auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", " from .autonotebook import tqdm as notebook_tqdm\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Unsloth: OpenAI failed to import - ignoring for now.\n", "🦥 Unsloth Zoo will now patch everything to make training faster!\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\sbtwc\\.conda\\envs\\unsloth_env\\Lib\\site-packages\\unsloth_zoo\\gradient_checkpointing.py:330: UserWarning: expandable_segments not supported on this platform (Triggered internally at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\c10/cuda/CUDAAllocatorConfig.h:28.)\n", " GPU_BUFFERS = tuple([torch.empty(2*256*2048, dtype = dtype, device = f\"cuda:{i}\") for i in range(n_gpus)])\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "==((====))== Unsloth 2025.3.9: Fast Qwen2 patching. Transformers: 4.48.1.\n", " \\\\ /| NVIDIA GeForce RTX 3060 Laptop GPU. Num GPUs = 1. Max memory: 6.0 GB. Platform: Windows.\n", "O^O/ \\_/ \\ Torch: 2.6.0+cu126. CUDA: 8.6. CUDA Toolkit: 12.6. Triton: 3.2.0\n", "\\ / Bfloat16 = TRUE. FA [Xformers = 0.0.29.post3. FA2 = False]\n", " \"-____-\" Free license: http://github.com/unslothai/unsloth\n", "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Unsloth 2025.3.9 patched 36 layers with 36 QKV layers, 36 O layers and 36 MLP layers.\n" ] } ], "source": [ "from unsloth import FastLanguageModel\n", "import torch\n", "\n", "# 基础配置参数\n", "max_seq_length = 4096 # 最大序列长度\n", "dtype = None # 自动检测数据类型\n", "load_in_4bit = True # 使用4位量化以减少内存使用\n", "\n", "# 加载预训练模型和分词器\n", "model, tokenizer = FastLanguageModel.from_pretrained(\n", " model_name = \"workdir/model/Qwen2.5-3B-Instruct-bnb-4bit\", # 选择Qwen2.5 32B指令模型\n", " max_seq_length = max_seq_length,\n", " dtype = dtype,\n", " load_in_4bit = load_in_4bit,\n", ")\n", "\n", "model = FastLanguageModel.get_peft_model(\n", " model,\n", " r = 64, # LoRA秩,控制可训练参数数量\n", " target_modules = [\"q_proj\", \"k_proj\", \"v_proj\", \"o_proj\",\n", " \"gate_proj\", \"up_proj\", \"down_proj\",], # 需要训练的目标模块\n", " lora_alpha = 64, # LoRA缩放因子\n", " lora_dropout = 0, # LoRA dropout率\n", " bias = \"none\", # 是否训练偏置项\n", " use_gradient_checkpointing = \"unsloth\", # 使用梯度检查点节省显存\n", " random_state = 114514, # 随机数种子\n", " use_rslora = False, # 是否使用稳定版LoRA\n", " loftq_config = None, # LoftQ配置\n", ")\n", "\n", "from unsloth.chat_templates import get_chat_template\n", "# 配置分词器使用qwen-2.5对话模板\n", "tokenizer = get_chat_template(\n", " tokenizer,\n", " chat_template=\"qwen-2.5\",\n", ")\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Map: 100%|██████████| 595/595 [00:00<00:00, 7000.21 examples/s]\n" ] } ], "source": [ "# 加载数据集\n", "import json\n", "\n", "def formatting_prompts_func(examples):\n", " \"\"\"格式化对话数据的函数\n", " Args:\n", " examples: 包含对话列表的字典\n", " Returns:\n", " 包含格式化文本的字典\n", " \"\"\"\n", " questions = examples[\"question\"]\n", " answer = examples[\"answer\"]\n", " \n", " # 将Question和Response组合成对话形式\n", " convos = [\n", " [{\"role\": \"user\", \"content\": q}, {\"role\": \"assistant\", \"content\": r}]\n", " for q, r in zip(questions, answer)\n", " ]\n", " \n", " # 使用tokenizer.apply_chat_template格式化对话\n", " texts = [\n", " tokenizer.apply_chat_template(convo, tokenize=False, add_generation_prompt=False)\n", " for convo in convos\n", " ]\n", " \n", " return {\"text\": texts}\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'question': 'LLaMA-Factory有哪些训练方法?', 'answer': 'LLaMA-Factory提供了Pre-training和Post-training两种训练方法。', 'text': '<|im_start|>system\\nYou are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>\\n<|im_start|>user\\nLLaMA-Factory有哪些训练方法?<|im_end|>\\n<|im_start|>assistant\\nLLaMA-Factory提供了Pre-training和Post-training两种训练方法。<|im_end|>\\n'}\n" ] } ], "source": [ "from datasets import load_dataset\n", "dataset = load_dataset(\"json\", data_files=\"workdir\\dataset\\dataset.json\",split=\"train\")\n", "dataset = dataset.map(formatting_prompts_func, batched = True)\n", "\n", "print(dataset[5])" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "GPU = NVIDIA GeForce RTX 3060 Laptop GPU. Max memory = 6.0 GB.\n", "2.557 GB of memory reserved.\n" ] } ], "source": [ "from trl import SFTTrainer\n", "from transformers import TrainingArguments, DataCollatorForSeq2Seq\n", "from unsloth import is_bfloat16_supported\n", "\n", "# 配置训练器\n", "trainer = SFTTrainer(\n", " model=model,\n", " tokenizer=tokenizer,\n", " train_dataset=dataset,\n", " dataset_text_field=\"text\",\n", " max_seq_length=max_seq_length,\n", " data_collator=DataCollatorForSeq2Seq(tokenizer=tokenizer),\n", " dataset_num_proc=1,\n", " packing=False,\n", " args=TrainingArguments(\n", " per_device_train_batch_size=1, # 每个设备的批次大小\n", " gradient_accumulation_steps=4, # 梯度累积步数\n", " warmup_steps=3*50, # 预热步数\n", " max_steps=3*500, # 最大训练步数\n", " learning_rate=1e-4, # 学习率\n", " fp16=not is_bfloat16_supported(), # 是否使用fp16\n", " bf16=is_bfloat16_supported(), # 是否使用bf16\n", " logging_steps=5, # 日志记录间隔\n", " optim=\"paged_adamw_8bit\", # 优化器\n", " weight_decay=0.01, # 权重衰减\n", " lr_scheduler_type=\"linear\", # 学习率调度器\n", " seed=114514, # 随机种子\n", " output_dir=\"workdir/checkpoint/\", # 输出目录\n", " save_strategy=\"steps\", # 按步保存中间权重\n", " save_steps=200, # 每多少步保存一次中间权重\n", " report_to=\"none\", # 不使用外部日志工具\n", " ),\n", ")\n", "\n", "from unsloth.chat_templates import train_on_responses_only\n", "# 设置仅对助手回复部分计算损失\n", "trainer = train_on_responses_only(\n", " trainer,\n", " instruction_part = \"<|im_start|>user\\n\",\n", " response_part = \"<|im_start|>assistant\\n\",\n", ")\n", "\n", "# 获取GPU信息\n", "gpu_stats = torch.cuda.get_device_properties(0)\n", "start_gpu_memory = round(torch.cuda.max_memory_reserved() / 1024 / 1024 / 1024, 3)\n", "max_memory = round(gpu_stats.total_memory / 1024 / 1024 / 1024, 3)\n", "print(f\"GPU = {gpu_stats.name}. Max memory = {max_memory} GB.\")\n", "print(f\"{start_gpu_memory} GB of memory reserved.\")" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "==((====))== Unsloth - 2x faster free finetuning | Num GPUs used = 1\n", " \\\\ /| Num examples = 595 | Num Epochs = 11 | Total steps = 1,500\n", "O^O/ \\_/ \\ Batch size per device = 1 | Gradient accumulation steps = 4\n", "\\ / Data Parallel GPUs = 1 | Total batch size (1 x 4 x 1) = 4\n", " \"-____-\" Trainable parameters = 119,734,272/1,818,406,912 (6.58% trained)\n" ] }, { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " [1500/1500 1:15:43, Epoch 10/11]\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
StepTraining Loss
52.941600
102.629000
152.573900
201.995600
251.651400
301.505400
351.709300
401.530200
451.362000
501.413000
551.291000
601.365500
651.374200
701.313900
751.388400
801.292300
851.205700
901.162200
951.194100
1000.905200
1051.107500
1100.915300
1151.197300
1200.832900
1251.005700
1300.883100
1351.002800
1400.871200
1450.896200
1500.738400
1550.821300
1600.540100
1650.528400
1700.748300
1750.530400
1800.827400
1850.462000
1900.662100
1950.460600
2000.489000
2050.718200
2100.560800
2150.465400
2200.563800
2250.511300
2300.633600
2350.672000
2400.512300
2450.435900
2500.602000
2550.410400
2600.444500
2650.498200
2700.474100
2750.499900
2800.472900
2850.515300
2900.710300
2950.471400
3000.435600
3050.227500
3100.329300
3150.278500
3200.199700
3250.185300
3300.319400
3350.221700
3400.199100
3450.263700
3500.162200
3550.240800
3600.233900
3650.283800
3700.234300
3750.280000
3800.421600
3850.244700
3900.263500
3950.227000
4000.200800
4050.196800
4100.226100
4150.267700
4200.166400
4250.307700
4300.295600
4350.184200
4400.196100
4450.220000
4500.137200
4550.115100
4600.157100
4650.142500
4700.161300
4750.121700
4800.182200
4850.094400
4900.135800
4950.115100
5000.144500
5050.148100
5100.099800
5150.131800
5200.150100
5250.130300
5300.153200
5350.178000
5400.107700
5450.182500
5500.151500
5550.157400
5600.186700
5650.192900
5700.137400
5750.099100
5800.094500
5850.117100
5900.150600
5950.093600
6000.090400
6050.068400
6100.107400
6150.034200
6200.075000
6250.073900
6300.078400
6350.077900
6400.065600
6450.101700
6500.084900
6550.073000
6600.100800
6650.035700
6700.076300
6750.077500
6800.060200
6850.107900
6900.109300
6950.082700
7000.075900
7050.088300
7100.112000
7150.084100
7200.127700
7250.070700
7300.085400
7350.054400
7400.083300
7450.044600
7500.025700
7550.039400
7600.056600
7650.050800
7700.042500
7750.054000
7800.061200
7850.064100
7900.048600
7950.048600
8000.050300
8050.056400
8100.051000
8150.060900
8200.054600
8250.024800
8300.027800
8350.083900
8400.046700
8450.073400
8500.030800
8550.059400
8600.027300
8650.066000
8700.080000
8750.059600
8800.052600
8850.055900
8900.042300
8950.034500
9000.019600
9050.027800
9100.012100
9150.027300
9200.036900
9250.030100
9300.027900
9350.028700
9400.061500
9450.025500
9500.020100
9550.021700
9600.026800
9650.035700
9700.029600
9750.020600
9800.032200
9850.040200
9900.015200
9950.025100
10000.027800
10050.032900
10100.048000
10150.035200
10200.017700
10250.029700
10300.041900
10350.031100
10400.038100
10450.034800
10500.020000
10550.017500
10600.019300
10650.029900
10700.011500
10750.023900
10800.012700
10850.012800
10900.025500
10950.018500
11000.007200
11050.028500
11100.024600
11150.015600
11200.020200
11250.010500
11300.023900
11350.020300
11400.031900
11450.023100
11500.006700
11550.016700
11600.020200
11650.023900
11700.014300
11750.017000
11800.034100
11850.034900
11900.020800
11950.016200
12000.013200
12050.015100
12100.013000
12150.015700
12200.006100
12250.011600
12300.016800
12350.015200
12400.013600
12450.012000
12500.017800
12550.018500
12600.010800
12650.012700
12700.008500
12750.015700
12800.016000
12850.012100
12900.019400
12950.018100
13000.009400
13050.026600
13100.006500
13150.010900
13200.026600
13250.021100
13300.012100
13350.014700
13400.018100
13450.009500
13500.008000
13550.006400
13600.007300
13650.007600
13700.010000
13750.010200
13800.013900
13850.006400
13900.005500
13950.009000
14000.010400
14050.011200
14100.007200
14150.008300
14200.006000
14250.010000
14300.008900
14350.013300
14400.015000
14450.013900
14500.016000
14550.019200
14600.012300
14650.012800
14700.011900
14750.016400
14800.008100
14850.007700
14900.006300
14950.002100
15000.008000

" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#trainer_stats = trainer.train()\n", "trainer_stats = trainer.train(resume_from_checkpoint = False)\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "llamafactory支持多种类型的微调,具体支持的类型可以通过配置文件的`finetuning_type`字段来指定。例如,在`examples/inference/llamafactory_lora_sft.yaml`配置文件中,`finetuning_type`指定为`lora`,表示使用LoRA微调方法。<|im_end|>\n" ] } ], "source": [ "FastLanguageModel.for_inference(model)\n", "\n", "# 准备相同的测试输入\n", "messages = [\n", " {\"role\": \"user\", \"content\": \n", " \"\"\"llama factory支持什么类型的微调\"\"\"}\n", "]\n", "inputs = tokenizer.apply_chat_template(\n", " messages,\n", " tokenize = True,\n", " add_generation_prompt = True,\n", " return_tensors = \"pt\",\n", ").to(\"cuda\")\n", "\n", "# 使用TextStreamer进行流式生成\n", "from transformers import TextStreamer\n", "text_streamer = TextStreamer(tokenizer, skip_prompt = True)\n", "_ = model.generate(input_ids = inputs, streamer = text_streamer, max_new_tokens = 128,\n", " use_cache = True, temperature = 1.5, min_p = 0.1)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.11" } }, "nbformat": 4, "nbformat_minor": 2 }