赞
踩
听了晓华老师分享的模型微调第一节课,其中有不少知识点需要后续查询资料了解,所以我对知识要点做了部分记录总结。同时模型微调涉及到一些基本的环境准备操作,例如Git客户端的安装使用、ubuntu子系统的安装等,我也顺便把过程梳理下来,方便其他同学了解。
总体来说,模型微调的前序工作过程主要有下面几个步骤:
环境准备有两种方式:本地环境 或 阿里云远程环境
本地环境:需要本机有比较强的显卡做支持,例如:运行Llama3-8B需要20G的显存,本地的机器有24G+的显存。
远程环境:如果本地没有比较强的显卡做支撑,可以通过试用阿里云的免费PAI环境。(这种方式在忙时可能存在没有空余机器可用的情况)
在Windows下安装子系统是比较常见的教程,网上有比较多的参考资料可供搜索。为了避坑,我这里基于网上的教程进行更为细化的操作指南梳理,以及可能踩坑问题的提醒。
安装方法:
检查Windows版本:
WSL最早出现在Windows 10版本1709(即Windows 10秋季创意者更新)中。因此,首先确保你的Windows系统版本是Windows 10秋季创意者更新或更高版本。
检查Hyper-V支持:WSL 2需要Hyper-V支持。你可以通过以下步骤检查是否支持Hyper-V
备注:此处一定要确认当前电脑的系统版本以及是否支持Hyper-V,我的某台电脑里如下所示是不支持Hyper-V。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
wsl --set-default-version 2
git config --global user.name "Dongming"
git config --global user.email "zgdmemail@126.com"
在ubuntu系统下确认模型必备的Python已经安装。可以通过以下命令检查Python版本:
python --version
确保系统中已经安装了pip,它是Python的包管理工具。可以使用以下命令安装pip:
sudo apt update
sudo apt install python3-pip
安装必要的Python依赖库,如transformers、torch等。可以使用pip进行安装:
pip install transformers torch
pytorch大概700多M,下载安装这个过程可能会比较久,耐心等待下。
安装Jupyter Notebook,方便后续运行代码查看用,命令为
pip install jupyter
实例名称:Llama3_for_study
如果使用的是本地环境,在安装了Git客户端后,选择对应的目录拉取代码。
git clone https://www.modelscope.cn/LLM-Research/Meta-Llama-3-8B-Instruct.git
又是一个漫长的拉取代码的过程,代码拉取完毕大概30G。
由于远程环境已经提前安装好了Git、Jupyter、Python、torch等环境依赖,所以直接拉取代码即可。
在Jupyter Notebook中,运行以下指令,检测当前机器环境
import sys import torch # 输出Python版本 print("当前Python版本:", sys.version) # 输出PyTorch版本 print("当前PyTorch版本:", torch.__version__) # 检查GPU是否可用并输出显卡情况 if torch.cuda.is_available(): gpu_name = torch.cuda.get_device_name(0) gpu_memory = torch.cuda.get_device_properties(0).total_memory / 1e9 # 转换为GB print(f"发现GPU:{gpu_name}") print(f" 显存总量:{gpu_memory} GB") else: print("未发现可用的GPU设备")
运行后提示如下信息:
直接使用Llama3提供的加载代码,会报错提示安装ipywidgets,所以我们切换到Terminal下通过pip安装对应的组件。
pip install ipywidgets
import transformers import torch from modelscope import snapshot_download from transformers import AutoTokenizer, pipeline model_id = snapshot_download("LLM-Research/Meta-Llama-3-8B-Instruct") # 加载tokenizer tokenizer = AutoTokenizer.from_pretrained(model_id) pipeline = transformers.pipeline( "text-generation", model=model_id, model_kwargs={"torch_dtype": torch.bfloat16}, device="cuda", ) messages = [ {"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"}, {"role": "user", "content": "Who are you?"}, ] prompt = pipeline.tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True ) terminators = [ tokenizer.eos_token_id, tokenizer.convert_tokens_to_ids("<|eot_id|>") ] outputs = pipeline( prompt, max_new_tokens=256, eos_token_id=terminators, do_sample=True, temperature=0.6, top_p=0.9, ) print(outputs[0]["generated_text"][len(prompt):])
运行成功后,大模型会通过对话返回相关信息。
在加载大模型的过程中,阿里云的控制台会实时显示显存的使用情况。
除了使用控制台,可以通过Linux命令查看显存的使用情况
watch -n 1 nvidia-smi
Llama3是Meta推出的最新一代大型语言模型(LLM),它基于Llama2架构进行了进一步的优化和增强。Llama3在性能和可扩展性方面进行了显著提升,能够轻松处理多步骤任务。通过改进的后训练过程,Llama3显著降低了错误拒绝率,提高了回应的一致性,并增加了模型答案的多样性。此外,Llama3在推理、代码生成和指令执行等能力上都有显著提升。
Llama3模型提供了两种规模的版本:8B参数和70B参数,每种规模都有基础(预训练)版本和指令调优版本。所有版本的模型都可以在各种消费级硬件上运行,并且具有8K令牌的上下文长度。
模型训练通常包括三个阶段:Self-Supervised Pre-Training(自监督预训练)、Self-Supervised Fine-Tuning(自监督微调)和Reinforcement Learning with Human Feedback(强化学习与人类反馈)。
Self-Supervised Pre-Training (SFT):
在这个阶段,模型通过大规模的未标记数据(如Masked Language Model(MLM)或Next Sentence Prediction(NSP))进行自监督预训练,学习捕捉数据中的模式和特征。这有助于模型建立起对数据的基本理解和知识。
Self-Supervised Fine-Tuning (SSFT):
在自监督微调阶段,模型使用少量标记数据对预训练模型进行微调,以适应特定任务或领域的要求。微调过程有助于提升模型在特定任务上的性能和泛化能力。
Reinforcement Learning with Human Feedback (RLHF):
在这一阶段,模型通过与人类交互和接收人类反馈来进一步优化和改进。强化学习算法被用于指导模型在与环境互动时学习最优策略,同时结合人类反馈提供额外的指导和调整。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。