所有教程由网友发布,仅供参考,请谨慎采纳。科创不对教程的科学性、准确性、可靠性负责。
本地(家庭电脑)使用大模型与微调(简单入门版)
九又2024/11/02原创 软件综合 IP:甘肃
关键词
大模型使用ollama微调大模型本地部署大模型本地微调大模型

  先来列举几个可供本地使用与微调的大模型:

   1:qwen2/qwen/qwen2.5:有0.5B,1B,2B,4B,7B等。

   2:llama3/llama2:有2B,7B,8B,32B,70B等。

   3:gemma2/gemma:有2B,7B,8B等。

再来说说B这个概念:

大模型的参数单位一般用“B”来表示,1B代表10亿参数。

普通家庭电脑(本人电脑举例:ddr4 8gb内存 i3 10105f cpu)来说,带动0.5B到2B没问题,到7B,8B变卡在往上....就带不动了。

不微调大模型只使用的话不吃gpu,更看重内存与cpu的性能。


进入主题:如何使用大模型

在github有一个开源软件:ollam

捕获.png

官网:奥拉马

选择linux使用命令行安装或者windows下载安装使用。

本人电脑为windows则以windows为示列:

首先是下载安装,这一点就不用多说了。

使用大模型这一步非常简单:

只需要在linux/windows命令行中输入: ollama run xxx(参照qwen2.5:1.5b "ollama run qwen2.5:1.5b")

带它下载完成便可以在命令行中对话了

捕获2.png

其它包括web页面,网络接口等请看github ollama页面,这里只进行简单示列不做展示

GitHub - ollama/ollama:启动并运行 Llama 3.2、Mistral、Gemma 2 和其他大型语言模型。

顺带一提:以上要修改大模型存储地址(windows)需要修改环境变量

捕获3.png

(标蓝处)

下一步:微调大模型,也是我当时摸索好久的困难的一步,稍有不对找错整天。

先不谈微调的工具...先配置环境(需要电脑带python环境)。

首先英伟达有一个开发工具:cuda toolkit

这东西.....需要读者自己去找了时间太久远搞忘了。(但大致是在官网根据自己cuda版本下载,需要梯子或者国外访问)

cmd键入:NVIDIA-smi 查看

接下来是安装: pytorch(pip安装)

好了....这一步足够你找半天问题详细解释和具体操作....实在是太长但简单来说:

上面这货有gpu 和 cpu两种,通过镜像站安装的大部分为cpu版。

检查方法为以下:

import torch
print(torch.cuda.is_available())  # 是否可以用gpu False不能,True可以
print(torch.cuda.device_count())  # gpu数量, 0就是没有,1就是检测到了
print(torch.__version__) #结果X.X.X+cpu不行

安装为cpu的解决方法大致为:进入官网Start Locally | PyTorch下载pytorch

不过具体的解决方法读者可以参考别人的博客:XXXXXXXXXXXXX_available()返回false——解决办法_cuda available false-CSDN博客


ok当以上顺利....下一步开始用LLaMA-Factory-main微调大模型


进入github 下载LLaMA-Factory-main:XXXXXXXXXXXXXXXXXX/hiyouga/LLaMA-Factory

不过....在:安装 - LLaMA Factory这上能找到LLaMA-Factory-main使用方法以及微调大模型环境配置的方法。

这里要说明的是:ollama中下载的大模型只能使用不能训练。

所以读者要去huggingface或者首页 · 魔搭社区上下载

在安装了LLaMA-Factory-main文件夹下(带有XXXXXXXX的文件夹)cmd输入:llamafactory-cli webui

等待一会会自动跳转进页面

捕获4.png

如上,模型路径为你存放模型的路径

数据集选择一个自带的数据集使用默认参数点击开始按钮便可以开始微调了。

微调完可以在chat页面下加载模型并与它对话。

捕获5.png

然后.....如何自定义数据集呢?

## Alpaca 格式


### 指令监督微调数据集


- [样例数据集](alpaca_zh_demo.json)


在指令监督微调时,`instruction` 列对应的内容会与 `input` 列对应的内容拼接后作为人类指令,即人类指令为 `instruction\ninput`。而 `output` 列对应的内容为模型回答。


如果指定,`system` 列对应的内容将被作为系统提示词。


`history` 列是由多个字符串二元组构成的列表,分别代表历史消息中每轮对话的指令和回答。注意在指令监督微调时,历史消息中的回答内容**也会被用于模型学习**。


```json

[

  {

    "instruction": "人类指令(必填)",

    "input": "人类输入(选填)",

    "output": "模型回答(必填)",

    "system": "系统提示词(选填)",

    "history": [

      ["第一轮指令(选填)", "第一轮回答(选填)"],

      ["第二轮指令(选填)", "第二轮回答(选填)"]

    ]

  }

]

```


对于上述格式的数据,`dataset_info.json` 中的*数据集描述*应为:


```json

"数据集名称": {

  "file_name": "data.json"

}

```


(摘自data路径下 README_XXXXX)

没错,就是在一个json文件中保存

[

  {

    "instruction": "你的名字",

    "input": "",

    "output": "cs1"

  },

  {

    "instruction": "你的作用",

    "input": "",

    "output": "语言部分"

  },

    {

    "instruction": "微调你的办法",

    "input": "",

    "output": "在data下保存json文件"

  }

]


这样的文件(放在data路径下),并在dataset_info.json(data路径下)中添加

"你刚刚保存的json文件": {

  "file_name": "data.json"

}

好了,接下来你就能在数据集列表中看到你保存的数据集并使用他了。

必须要注意的一点是:python不能读取(处理)带bom(带签名)的json文件。

你需要使用emedtior等文本工具保存无bom(签名)的编码格式。


(以后有时间在详细研究研究微调中参数和大模型的原理之类的吧,本篇到此结束。)

来自:计算机科学 / 软件综合严肃内容:教程/课程
2
9
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
warmonkey
1个月18天前 IP:广东
938896

楼主可以试试看amd集成显卡跑directML pytorch,这个能比cpu快一些

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
XZH100
1个月18天前 IP:上海
938955

感觉家用电脑最多微调个8b的模型了(刚刚试了个3b的用了8g的显存),但8b模型用起来对用户输入的理解不太充分。除非有特殊用途不然感觉微调模型对于个人没有太大价值。

引用
评论(1)
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
九又
进士 机友
文章
7
回复
15
学术分
0
2024/07/23注册,7天5时前活动

没什么简介?时而整整软件时而玩玩硬件......有时玩玩火箭。 有一个个人博客:XXXXXXXXXXXXXXXXat (访问时温柔点,服务器挺不住)

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:甘肃
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}