当前位置: 首页 > news >正文

Windows10上使用llama-recipes(LoRA)来对llama-2-7b做fine-tune

刚刚在Windows10上搭建环境来对llama2做finetune,里面坑还是挺多的,这里把印象中的坑整理了一下以作备忘。

llama-recipes是meta的开源项目,Github地址为:GitHub - facebookresearch/llama-recipes: Examples and recipes for Llama 2 model

llama2同样也是meta的开源LLM模型,因此用此项目做finetune应该是正确的方向;

模型的选择

模型在自然是在huggingface上下载到的,上面的模型很多,因此您也有很多选择。程序加载模型采用了torch因此需要选择带有pytorch-xxx.bin的目录。本人选择的是daryl149/llama-2-7b-chat-hf(daryl149/llama-2-7b-chat-hf · Hugging Face)

数据集选择

默认数据集是samsum_dataset;使用这个数据集的目标是为一段文字做总结。本人的模型微调目标是问答,所以使用了模型提到的另一个数据集:stanford的alpaca_dataset(文本数据21.7 MB)。

数据集请见:Stanford CRFM 

这里我是用项目自带的notebook “quickstart”来一步步执行的,所以我们需要在代码中对数据集进行调整

train_dataset = get_preprocessed_dataset(tokenizer, alpaca_dataset, 'train')

依赖包下载

依赖包下载比较麻烦,这里是坑最多的地方;国内的网速是一方面,类库对Windows系统的支持是另一方面。

国内镜像加速

很庆幸在互联网上找到了这个清华的源,在pip安装的时候可以加上参数:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

torch的下载

我这边经过requirement下载的默认是CPU版本的(😓)

需要卸载并安装GPU版本的,本人目前没有调通CPU版本的程序(从实际角度来说,也是GPU在真实场景下使用概率更高)。如何在安装请参考Start Locally | PyTorch

这里我通过CONDA,装的是CUDA11.8

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

一步步处理缺失的包

这里大概就是缺什么包就装什么包

有一点需要额外关注的,就是程序识别不到GPU

这种情况一是安装了CPU版本的pytorch,在前面提到了解决方法;还有一种可能是bitsandbytes的问题;

在Windows10中,我最后同时安装了bitsandbytes 0.39.0版本和bitsandbytes-Windows 0.37.5版本;

同时参考了这篇文章:win11下bitsandbytes的用法 – yinfupai

我仅仅是将main.py 中的evaluate_cuda_setup() 函数做了修改,如下:

#return binary_name, cudart_path, cuda, cc, cuda_version_string
return "libbitsandbytes_cuda118.dll", None, None, None, None

我安装的cuda版本是11.8,因此做如上修改;

运行程序

在我的机器上运行一个epoch要50多个小时(😓),想要发挥作用还是需要更好的算力支持啊!

http://www.lryc.cn/news/153161.html

相关文章:

  • 06-限流策略有哪些,滑动窗口算法和令牌桶区别,使用场景?【Java面试题总结】
  • 2021年06月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • Tuxera NTFS for Mac2023苹果电脑Mac硬盘读写工具
  • 系统调用的过程
  • Python将多个文件的名称或后缀名由大写字母修改为小写的方法
  • Debezium的三种部署方式
  • 通讯协议057——全网独有的OPC HDA知识一之接口(十二)IOPCHDA_DataCallback
  • 后端SpringBoot+前端Vue前后端分离的项目(一)
  • docker 安装 MySQL5.7
  • 分布式session的4种解决方案
  • SQL Server2008下载地址
  • MySQL函数和约束
  • 关于一个git的更新使用流程
  • vue 对后端返回字段值为null的变成空字符串
  • C++,菱形继承和虚继承
  • js实现一行半文本的截取
  • 计算一个区间时间差值,时间保留剩下的差值
  • uniapp 微信小程序添加隐私保护指引
  • 行业追踪,2023-08-30
  • Redis——》Redis的部署方式对分布式锁的影响
  • VTK——使用包围盒切割医学图像
  • 在工具提示中使用自绘修改字体
  • 【Git管理工具】使用Docker部署GitLab服务器
  • 安装kali虚拟机镜像的坑
  • 【Android】TextView适配文本大小并保证中英文内容均在指定的UI 组件内部
  • 【力扣每日一题】2023.8.31 一个图中连通三元组的最小度数
  • C语言--volatile
  • 技术深入解析与教程:网络安全技术探秘
  • Android studio 实现生成二维码和扫描二维码
  • Linux中7种文件类型