llamaindex+Internlm2 RAG实践

指导文档:Tutorial/docs/L1/LlamaIndex at camp3 · InternLM/Tutorial (github.com)

1 配置基础环境

进入开发机后,创建新的conda环境,命名为 llamaindex,在命令行模式下运行:

conda create -n llamaindex python=3.10

运行 conda 命令,激活 llamaindex 然后安装相关基础依赖 python 虚拟环境:

conda activate llamaindex
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia

安装python 依赖包

pip install einops
pip install  protobuf

运行 conda 命令,激活 llamaindex 然后安装相关基础依赖 python 虚拟环境:

conda activate llamaindex
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia

报错:

尝试:

conda clean --all
conda update --all

无效

怀疑pytorch版本错误,重新启动开发机选择cuda11.7版本

还是不行,可能之前安装包缓存未清理,导致安装包不能正常安装。清理一下

conda clean --all

重新下载pytorch问题解决。

回顾出故障原因第一次下载pytorch包时候网络中断了,可能因此发生故障。

安装python 依赖包

pip install einops
pip install  protobuf

2 安装 Llamaindex

conda activate llamaindex
pip install llama-index==0.10.38 llama-index-llms-huggingface==0.2.0 "transformers[torch]==4.41.1" "huggingface_hub[inference]==0.23.1" huggingface_hub==0.23.1 sentence-transformers==2.7.0 sentencepiece==0.2.0

3 下载 Sentence Transformer 模型

cd ~
mkdir llamaindex_demo
mkdir model
cd ~/llamaindex_demo
touch download_hf.py

打开download_hf.py 贴入以下代码

import os

# 设置环境变量
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'

# 下载模型
os.system('huggingface-cli download --resume-download sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 --local-dir /root/model/sentence-transformer')

然后,在 /root/llamaindex_demo 目录下执行该脚本即可自动开始下载:

cd /root/llamaindex_demo
conda activate llamaindex
python download_hf.py

第一次超时,第二次成功

4 下载 NLTK 相关资源

我们在使用开源词向量模型构建开源词向量的时候,需要用到第三方库 nltk 的一些资源。正常情况下,其会自动从互联网上下载,但可能由于网络原因会导致下载中断,此处我们可以从国内仓库镜像地址下载相关资源,保存到服务器上。 我们用以下命令下载 nltk 资源并解压到服务器上:

cd /root
git clone https://gitee.com/yzy0612/nltk_data.git  --branch gh-pages
cd nltk_data
mv packages/*  ./
cd tokenizers
unzip punkt.zip
cd ../taggers
unzip averaged_perceptron_tagger.zip
cd /root
git clone https://gitee.com/yzy0612/nltk_data.git  --branch gh-pages
cd nltk_data
mv packages/*  ./
cd tokenizers
unzip punkt.zip
cd ../taggers
unzip averaged_perceptron_tagger.zip

LlamaIndex HuggingFaceLLM

运行以下指令,把 InternLM2 1.8B 软连接出来

cd ~/model
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b/ ./

运行以下指令,新建一个python文件

cd ~/llamaindex_demo
touch llamaindex_internlm.py

打开llamaindex_internlm.py 贴入以下代码

from llama_index.llms.huggingface import HuggingFaceLLM
from llama_index.core.llms import ChatMessage
llm = HuggingFaceLLM(
    model_name="/root/model/internlm2-chat-1_8b",
    tokenizer_name="/root/model/internlm2-chat-1_8b",
    model_kwargs={"trust_remote_code":True},
    tokenizer_kwargs={"trust_remote_code":True}
)

rsp = llm.chat(messages=[ChatMessage(content="xtuner是什么?")])
print(rsp)

之后运行

conda activate llamaindex
cd ~/llamaindex_demo/
python llamaindex_internlm.py

结果:

出故障,长时间无反馈,ctrl+C无法中断程序,直接重启重新运行。

Some parameters are on the meta device device because they were offloaded to the cpu.

是因为使用cpu推理很慢。参考别人的操作可以发现模型推理大概需要8.5G的内存,这略微超出我可用内存,我推理时显示使用的内存越7.5G。可见有些参数分配到cpu运行因而需要大量时间。

等待很久后:

torch.OutOfMemoryError: CUDA out of memory. Tried to allocate 724.00 MiB. GPU 0 has a total capacity of 7.99 GiB of which 588.00 MiB is free. Process 2728312 has 12.98 GiB memory in use. Process 2538853 has 7.42 GiB memory in use. Process 3356395 has 13.46 GiB memory in use. Of the allocated memory 6.25 GiB is allocated by PyTorch, and 696.16 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation.  See documentation for Memory Management  (https://pytorch.org/docs/stable/notes/cuda.html#environment-variables)

运行失败,重新运行推理依然不行,内存不足需要升配置。

成功显示。

LlamaIndex RAG

conda activate llamaindex
pip install llama-index-embeddings-huggingface llama-index-embeddings-instructor

报错:

指定版本:pip install llama-index-embeddings-huggingface==0.2.2 llama-index-embeddings-instructor==0.1.3

结果:

LlamaIndex web

自由发挥:学习《黑神话:悟空》知识:

未学习前:胡言乱语

RAG技术增强:

回答结果好很多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Denis1999

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值