当前位置:   article > 正文

RAG+GIS实战:离线RAG项目实战01——环境配置+简单对话模型搭建_离线rag大模型搭建

离线rag大模型搭建

RAG+GIS实战:离线RAG项目实战01——环境配置及技术选型


前言

最近发现大语言模型真的很火,而且它的归纳总结能力出奇的强,但是作为一个不方便使用魔法的程序员,不得不思考如何去离线部署、私有化这一技术,因此我会在这一系列博客和大家一起部署一个GIS相关的RAG项目,在技术选型方面尽量采用Windows系统及国内源,下面开始吧~
这篇文章带领大家简单构建一个本地模型哦~
还是在家当米虫好了
提示:以下是本篇文章正文内容,下面案例可供参考

一、Modelscope环境搭建

1.环境配置

Windows系统下的基本python环境配置,大家可以参考我的这篇文章:
python环境配置方法(2023)
鉴于有些同志不方便魔法上网登录Huggingface网站,因此大家可以选用阿里的Modelscope社区,环境配置的官方文档如下:
ModelScope快速开始

我的笔记本GPU是3060的显卡,大家可以借鉴一下我的环境配置哦~

gradio==4.21.0
langchain==0.1.11
modelscope==1.12.0
numpy==1.26.4
openai==0.28.1
pandas==2.2.1
sentence_transformers==2.5.0
torch==1.13.0+cu117
transformers==4.37.2
weaviate_client==4.5.0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

登录pytorch官网找到合适自己的版本哦!

pip install torch==1.13.0 torchvision==0.14.0 torchaudio==0.13.0 -f https://download.pytorch.org/whl/cu117/torch_stable.html
  • 1

2.检测一下你的配置有没有成功哦~

首先,在控制台激活你的环境,我自己搭建的环境叫transformers

conda activate transformers(换成你自己的环境名称)

然后,依次输入看看你的GPU有没有在好好运行~

进入python

最后,导入你的torch库,然后看看输出是否为True。

import torch
torch.cuda.is_available() 
  • 1
  • 2

二、通过Modelscope来下载模型并找到它的路径~

1.下载模型

创建一个py文件,用下面的代码测试一下下载模型、读取模型的流程是否顺利:

from modelscope import AutoModelForCausalLM, AutoTokenizer
from modelscope import snapshot_download

model_dir = snapshot_download('qwen/Qwen1.5-0.5B')
model = AutoModelForCausalLM.from_pretrained(
    model_dir,
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_dir)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

请注意,文档中的model_dir,可以直接从modelscope的仓库下载:
在这里插入图片描述
小提示,以通义千问模型为例,介绍不同后缀的作用:

预训练模型:续写文章 (例如:qwen/Qwen1.5-0.5B)
chat:对话模型 (例如:qwen/Qwen1.5-0.5B-Chat)
chat-int8/4: 8/4bit量化 把模型层换一下,调优,减少显存占用 4bit量化优化的更好 (例如:qwen/Qwen1.5-0.5B-Chat-GPTQ-Int4)

代码如果成功运行,则会自动下载,如图所示:
在这里插入图片描述

2.下载后的模型如何从本地加载~

路径如下:

C:\Users\用户名\.cache\modelscope\hub\qwen\Qwen1___5-0___5B

记得把自己用户名改一下,然后目录指向对应的模型文件夹即可~
然后改造一下刚才的代码看看刚才的模型是否ok:

from modelscope import AutoModelForCausalLM, AutoTokenizer
from modelscope import snapshot_download

model_dir = r"C:\Users\用户名\.cache\modelscope\hub\qwen\Qwen1___5-0___5B-Chat-GPTQ-Int4"
model = AutoModelForCausalLM.from_pretrained(
    model_dir,
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_dir)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

如果没有报错的话,我们就可以进行下一步了,搞一个简单的问答~

3.小测试~

用这个代码试验一下,看看输出结果如何~

from modelscope import AutoModelForCausalLM, AutoTokenizer
device = "cuda" # the device to load the model onto
model_dir = r"C:\Users\用户名\.cache\modelscope\hub\qwen\Qwen1___5-0___5B-Chat-GPTQ-Int4"
# "qwen/Qwen1.5-0.5B-Chat-GPTQ-Int4"
model = AutoModelForCausalLM.from_pretrained(
    model_dir,
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_dir)
query = "介绍一下什么是LLM."
messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": query}
]
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)
generated_ids = model.generate(
    model_inputs.input_ids,
    max_new_tokens=512
)
generated_ids = [
    output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

输出结果不出所料,开始胡言乱语了,这就是“幻觉”问题,没错,我们后续要用RAG来解决它!!!
在这里插入图片描述


知乎:RAG+GIS实战:离线RAG项目实战01

总结

以后会时常更新在GIS学习中和论文产出过程中的一些小tips,内容包括但不限于LLM+RAG+Agent+GIS、深度学习和图像处理相关的知识方法,大家可以在评论区一起交流进步,请多多关注,谢谢。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/435526
推荐阅读
相关标签