指导文档: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技术增强:
回答结果好很多。