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

news2024/10/6 4:00:47

刚刚在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.coloradmin.cn/o/963729.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【仿写spring之ioc篇】四、实现bean的初始化阶段

BeanPostProcessor 在Bean的初始化阶段有前置和后置方法,这个方法是通过BeanPostProcessor来管理的,下面我们对原有的项目结构做小小的更改。 对启动类作出修改,先检查有没有BeanPostProcessor的实现类,有的话就使用&#xff0c…

搜索二维矩阵 II

题目链接 搜索二维矩阵 II 题目描述 注意点 矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 解答思路 最初想到使用深度优先遍历剪枝实现,但是运行后超出时间限制了可以直接遍历整个矩阵查找,虽然不超时…

【sgLazyTree】自定义组件:动态懒加载el-tree树节点数据,实现增删改、懒加载及局部数据刷新。

特性 可以自定义主键、配置选项支持预定义节点图标&#xff1a;folder文件夹|normal普通样式多个提示文本可以自定义支持动态接口增删改节点 sgLazyTree源码 <template><div :class"$options.name" v-loading"rootLoading"><div class&qu…

wireshark抓包分析

题目一&#xff1a;Cephalopod(图片提取) 打开下载好的数据包&#xff1a;CtrlF 按照如图选择分组字节流&#xff0c;选择字符串&#xff0c;输入‘flag’筛选出数据包&#xff1b; 点击筛选出来的一条数据包&#xff0c;右键选择追踪tcp流&#xff1b; 然后可以看到png的字样…

2.92-KFKG射频微波同轴连接器的电气特性

2.92mm连接器的名称是以其外导体内径命名的&#xff0c;采用空气介质工作频率高达40GHz,可与SMA和3.5mm连接器互换对插。优越的电性能、可靠的连接尤其适用于测试系统和武*装备&#xff0c;成为国际上应用最为广泛的毫米微波连接器之一。 电气特性&#xff1a; 特性阻抗&…

解读《生成式人工智能服务管理暂行办法》

《生成式人工智能服务管理暂行办法》 第一章 总 则第二章 技术发展与治理第三章 服务规范第四章 监督检查和法律责任第五章 附 则 以ChatGPT为代表的现象级互联网应用的出现&#xff0c;掀起了人工智能领域新一轮技术浪潮。作为新一代信息技术&#xff0c;生成式人工智能通过…

正点原子I.MX6ull应用编程 看门狗实验 /dev/watchdog: Device or resource busy

记录自己学习正点原子I.Mx6ull应用编程教程中遇到的坑点和问题 按着正点原子<<I.MX6U嵌入式Linux C应用编程指南>>学习看门狗应用编程&#xff0c;在运行程序的时候出现 open error: /dev/watchdog: Device or resource busy 可以看到watchdog忙碌&#xff0c;看起…

Python所有方向的学习路线图!!

学习路线图上面写的是某个方向建议学习和掌握的知识点汇总&#xff0c;举个例子&#xff0c;如果你要学习爬虫&#xff0c;那么你就去学Python爬虫学习路线图上面的知识点&#xff0c;这样学下来之后&#xff0c;你的知识体系是比较全面的&#xff0c;比起在网上找到什么就学什…

MyBatis——MyBatis数据源与连接池

摘要 博文主要介绍MyBatis数据源与连接池&#xff0c;更好的理解MyBatis数据源与连接池。 一、MyBatis数据源DataSource分类 MyBatis把数据源DataSource分为三种&#xff1a; UNPOOLED 不使用连接池的数据源POOLED 使用连接池的数据源JNDI 使用JNDI实现的数据源 MyBatis内…

ESP32C3 LuatOS RC522①写入数据并读取M1卡

LuatOS RC522官方示例 官方示例没有针对具体开发板&#xff0c;现以ESP32C3开发板为例。 选用的RC522模块 ESP32C3-CORE开发板 注意ESP32C3的 SPI引脚位置&#xff0c;SPI的id2 示例代码 -- LuaTools需要PROJECT和VERSION这两个信息 PROJECT "helloworld" VERSIO…

网络地址转换技术NAT(第九课)

一 什么是NAT&#xff1f; NAT是网络地址转换的缩写&#xff0c;是一种在计算机网络中使用的技术&#xff0c;可以将私有地址转换为公共地址&#xff0c;从而实现本地网络与公共网络的互联。NAT工作在网络层&#xff0c;可以隐藏内部网络中的IP地址和端口号&#xff0c;从而增…

在数字时代中,该怎么保留温暖的传统

在我们现代快节奏的数字时代&#xff0c;许多人会不禁思考&#xff0c;传统的壁炉是否还有存在的必要。毕竟&#xff0c;现代家庭通常配备了先进的暖气系统和电子设备&#xff0c;能够在寒冷的日子里提供温暖。然而&#xff0c;尽管科技的进步使得家庭取暖变得更加便捷&#xf…

SpringCloudAlibaba常用组件

SpringCloudAlibaba常用组件 微服务概念 1.1 单体、分布式、集群 单体 ⼀个系统业务量很⼩的时候所有的代码都放在⼀个项⽬中就好了&#xff0c;然后这个项⽬部署在⼀台服务器上就 好了。整个项⽬所有的服务都由这台服务器提供。这就是单机结构。 单体应⽤开发简单,部署测试…

Axure RP暗黑色高保真中后台原型组件模板库及组件库素材

Axure RP暗黑色高保真中后台原型组件模板库及组件库素材&#xff0c;黑色一直以来就可以给人以高级、神秘的语义象征&#xff0c;相比于浅色模式&#xff0c;暗色模式藏着更多可能性。色彩具有层级关系&#xff0c;深色会在视觉感官上自动后退&#xff0c;浅色部分则会向前延展…

docker 笔记1

目录 1.为什么有docker ? 2.Docker 的核心概念 3.容器与虚拟机比较 3.1传统的虚拟化技术 3.2容器技术 3.3Docker容器的有什么作用&#xff1f; 3.4应用案例 4. docker 安装下载 4.1CentOS Docker 安装 4.2 Docker的基本组成 &#xff1f;&#xff08;面试&#xff09…

MLC-LLM 部署RWKV World系列模型实战(3B模型Mac M2解码可达26tokens/s)

0x0. 前言 我的 ChatRWKV 学习笔记和使用指南 这篇文章是学习RWKV的第一步&#xff0c;然后学习了一下之后决定自己应该做一些什么。所以就在RWKV社区看到了这个将RWKV World系列模型通过MLC-LLM部署在各种硬件平台的需求&#xff0c;然后我就开始了解MLC-LLM的编译部署流程和…

分公司电脑访问总部服务器突然不通了走的是SSL隧道,如何排查处理?

环境: 1.总部:AF做为PN AF-2000-FH2130B-SC v8.0.4 2.分部:SSL设备做对接为PN SSL VPN V7.0 单臂架设 出口AF v8.0.75 核心交换机 RUIYI NBS5710-24GT4SFP-E 问题描述: 1.分部下面pc其中一个网段(192.168.8.0)ping总部服务器(172.16.10.10)不通,长ping 98%丢包,…

Java- 虚拟机学习总结

Java文件编译&#xff0c;加载过程 写好java文件&#xff0c;jdk会通过javac编译class文件&#xff0c;classLaoder通过classpath将字节码文件加载进入jre jvm数据区 包含栈&#xff0c;堆&#xff0c;程序计数器&#xff0c;方法区&#xff0c;本地方法栈 JAVA里的常量&…

‘XXX‘ module: ‘XXX‘ facet resources问题解决(已解决)

问题描述&#xff1a;XXX module: XXX facet resources 在创建web工程的时候&#xff0c;出现说模块没有创建&#xff0c;但是我们返回我们的模块&#xff0c;web模块是添加好的。 通过多次实验&#xff0c;解决问题&#xff1a;就是web框架它的名称不能是一样的&#xff0c;必…

用迅为i.MX6ULL开发板同一个网段概念

使用 nfs 之前&#xff0c;开发板、虚拟机 ubuntu、windows 电脑三者要互相 ping 通&#xff0c;这就涉及到了同一个网段 的概念。 概念&#xff1a;同一个网段是指 IP 地址和子网掩码相与得到的相同的网络地址。 快速判断同一个网段&#xff1a; &#xff08;1&#xff09…