一、huggingface加载llama模型
使用pipeline加载模型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import transformersimport torchmodel_path = "meta-llama/Meta-Llama-3-8B-Instruct" tokenizer = AutoTokenizer.from_pretrained(model_path) pipeline = transformers.pipeline( "text-generation" , model=model_path, model_kwargs={"torch_dtype" : torch.bfloat16}, device="cpu" , ) sequences = pipeline( 'I liked "Breaking Bad" and "Band of Brothers". Do you have any recommendations of other shows I might like?\n' , do_sample=True , top_k=10 , num_return_sequences=1 , eos_token_id=tokenizer.eos_token_id, max_length=200 , ) for seq in sequences: print (f"Result: {seq['generated_text' ]} " )
直接创建模型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import transformersimport torchfrom transformers import AutoTokenizer, LlamaForCausalLMmodel_path = "/data/home/zhiminding/meta-llama/Meta-Llama-3-8B-Instruct" device = ( "cuda" if torch.cuda.is_available() else "cpu" ) model = LlamaForCausalLM.from_pretrained(model_path) tokenizer = AutoTokenizer.from_pretrained(model_path) if device == "cuda" : model = model.cuda() prompt = "你好,你叫什么名字" inputs = tokenizer(prompt, return_tensors="pt" ).to(device) generate_ids = model.generate(inputs.input_ids, max_length=30 ) res = tokenizer.batch_decode(generate_ids, skip_special_tokens=True , clean_up_tokenization_spaces=False )[0 ] print (res)
二、ollama加载llama模型
2.1 ollama简介
ollama是使用go开发的,用于快速部署量化(llama.cpp量化成gguf)后的大模型运行框架(模型可运行在cpu也可以运行在gpu上)。用于在单机或本地运行大模型服务,但是不适合高并发线上场景。可以结合open webui来提供web访问大模型
2.2 部署ollama
安装ollama
1 curl -fsSL https://ollama.com/install.sh | sh
运行后输出
1 2 3 4 5 6 7 8 9 >>> Installing ollama to /usr/local/bin... >>> Creating ollama user... >>> Adding ollama user to video group... >>> Adding current user to ollama group... >>> Creating ollama systemd service... >>> Enabling and starting ollama service... Created symlink from /etc/systemd/system/default.target.wants/ollama.service to /etc/systemd/system/ollama.service. >>> The Ollama API is now available at 127.0.0.1:11434. >>> Install complete. Run "ollama" from the command line.
Ollama服务端口及模型下载存放目录设置
默认情况下,不同操作系统大模型存储的路径如下:
macOS: ~/.ollama/models
Linux: /usr/share/ollama/.ollama/models
Windows: C:\Users.ollama\models
默认监听端口为:127.0.0.1:11434
配置ollama环境变量
编辑文件/etc/systemd/system/ollama.service
1 2 3 Environment="OLLAMA_HOST=0.0.0.0:11434" Environment="OLLAMA_MODELS=/data/models/ollama" Environment="CUDA_VISIBLE_DEVICES=0,1"
修改完成后需重启ollama
ollama服务停止和启动
1 2 3 4 5 6 7 8 9 10 ollama serve sudo systemctl start ollama systemctl stop ollama systemctl daemon-reload systemctl restart ollama
卸载ollama
1 2 3 4 5 6 7 sudo systemctl stop ollama sudo systemctl disable ollama sudo rm /etc/systemd/system/ollama.service sudo rm $(which ollama) sudo rm -r /usr/share/ollama sudo userdel ollama sudo groupdel ollama
Ollama下载模型
打开终端,输入命令
模型库可见:https://ollama.com/library
ollama对话模式运行模型
1 2 3 ollama run llama3:8b ollama run llamafamily/llama3-chinese-8b-instruct ollama run lgkt/llama3-chinese-alpaca
查看所有模型
从 GGUF模型文件 导入
Ollama 支持在 Modelfile 中导入 GGUF 模型:
创建一个名为 llama-3-8b-q8.mf 的文件,内容为使用 FROM 指令指定要导入的模型的本地文件路径。
1 2 3 4 5 FROM /jppeng/app/models/Llama3-8B-Chinese-Chat-GGUF-8bit/Llama3-8B-Chinese-Chat-q8.gguf ```sh 创建模型 ```sh ollama create llama-3-8b-q8-chs -f llama-3-8b-q8.mf
open webui使用
为提供web页面来使用ollama模型,开源社区提供了open webui工具:https://github.com/open-webui/open-webui
安装
1 2 3 docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main docker run -d --privileged --network=host -v /data/shared_open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart always ghcr.io/open-webui/open-webui:main
大模型推理加速
一、vllm使用教程
vllm是一个基于剪枝技术的大模型推理加速工具,通过去除模型中的冗余参数,可以在保证模型性能的同时显著减少推理时间。以下是使用vllm的基本步骤:
安装vllm库:从GitHub上克隆vllm的仓库,并按照官方文档进行安装。
加载预训练模型:使用vllm提供的API加载你想要加速的LLM模型。
模型剪枝:调用vllm的剪枝函数对模型进行剪枝,设置合适的剪枝率以达到最佳性能和速度的平衡。
推理:使用剪枝后的模型进行推理,你将发现推理速度得到了显著提升。
二、fastllm使用教程
fastllm是一个基于量化技术的大模型推理加速工具,通过降低模型参数的精度,可以在保证模型性能的同时减少推理所需的计算资源和内存占用。以下是使用fastllm的基本步骤:
安装fastllm库:从GitHub上克隆fastllm的仓库,并按照官方文档进行安装。
加载预训练模型:使用fastllm提供的API加载你想要加速的LLM模型。
模型量化:调用fastllm的量化函数对模型进行量化,选择合适的量化位数以达到最佳性能和速度的平衡。
推理:使用量化后的模型进行推理,你将发现推理速度和内存占用都得到了优化。
三、llama.cpp使用教程
llama.cpp是一个基于C++实现的大模型推理工具,通过优化底层计算和内存管理,可以在不牺牲模型性能的前提下提高推理速度。以下是使用llama.cpp的基本步骤:
安装llama.cpp库:从GitHub上克隆llama.cpp的仓库,并按照官方文档进行安装。
加载预训练模型:使用llama.cpp提供的API加载你想要加速的LLM模型。
配置推理参数:根据实际需要配置推理过程中的参数,如批处理大小、并行度等。
推理:使用llama.cpp进行推理,你将发现推理速度得到了显著提升,并且可以利用C++的灵活性进行更高级别的定制和优化。
四、tensorrt-llm结合triton使用
微调数据自动化生成
微调数据自动化生成 https://zhuanlan.zhihu.com/p/694173937
开源大模型微调和训练-指令遵循语言模型 Alpaca,如何利用gpt4蒸馏指令训练llama https://zhuanlan.zhihu.com/p/618423685
大模型训练集 https://blog.csdn.net/babyzbb636/article/details/133928447
可直接使用的微调框架: https://github.com/hiyouga/LLaMA-Factory.git
vllm,需要cuda12推理:
export VLLM_NCCL_SO_PATH=/root/miniconda3/lib/python3.11/site-packages/nvidia/nccl/lib/libnccl.so.2
参考:
Llama中文社区 https://github.com/LlamaFamily/Llama-Chinese
llama3全套中文资料 https://chinesellama.feishu.cn/wiki/XBKPwbhWriWCfrkmJhfcrS9Rnqc?fromScene=spaceOverview
大模型微调项目 / 数据集调研汇总 https://zhuanlan.zhihu.com/p/624079704
LLMs之Llama3:Llama-3的简介、安装和使用方法、案例应用之详细攻略 https://blog.csdn.net/qq_41185868/article/details/137981416
Llama3 中文通用Agent微调模型来啦!(附手把手微调实战教程)魔搭平台 https://www.53ai.com/news/qianyanjishu/1294.html
Llama3垂直领域微调-从数据生成到微调 https://zhuanlan.zhihu.com/p/694173937
开源大模型GGUF量化(llama.cpp)与本地部署运行(ollama)教程 https://zhuanlan.zhihu.com/p/689555159