Search Posts

从本地文件直接加载llama/llama 2/中文llama 的大语言模型的方法

从本地直接加载已有的大语言模型文件,用命令方式或python编程方式从本地直接加载模型文件,适合于模型文件已下载到本地的情况,或者模型文件已随软件一起打包的情况、docker容器化部署的情况,也适用Chinese-Llama-2-7b,可避免部署运行时每次重新联网下载huggingface上的模型的麻烦。

介绍两种方法实现:

  • 命令方式从本地文件直接加载llama/llama 2/中文llama 的大语言模型:
    参考 链接

    1. 在本地编译得到 llama.cpp 的可执行文件(main)后,通过main 加载本地模型文件。
      linux下的编译 + 加载模型的命令为:

      git clone https://github.com/ggerganov/llama.cpp;
      cd llama.cpp && make -j && ./main -m ./models/7B/ggml-model-q4_0.bin -p "Building a website can be done in 10 simple steps:" -n 512
  • 编程方式从本地文件直接加载llama/llama 2/中文llama 的大语言模型:

    1. 安装准备工作:
      pip install llama-cpp-python

      对 mac系统的支持、以及让llama.cpp支持使用 OpenBLAS / cuBLAS / CLBlast / Metal 作为后端的设置方法,可参考 链接

    2. 编程实现
      >>> from llama_cpp import Llama
      >>> llm = Llama(model_path="./models/7B/ggml-model.bin")
      >>> output = llm("Q: Name the planets in the solar system? A: ", max_tokens=32, stop=["Q:", "\n"], echo=True)
      >>> print(output)

      输出结果:

      "id": "cmpl-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "object": "text_completion",
      "created": 1679561337,
      "model": "./models/7B/ggml-model.bin",
      "choices": [
      {
      "text": "Q: Name the planets in the solar system? A: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune and Pluto.",
      "index": 0,
      "logprobs": None,
      "finish_reason": "stop"
      }
      ],
      "usage": {
      "prompt_tokens": 14,
      "completion_tokens": 28,
      "total_tokens": 42
      }
      }

      以上两种方式都实现了从本地加载模型。注意,以上方法适合于模型文件只有一个的时候。

模型文件有多个的情况:

如果模型文件有多个,比如,像https://huggingface.co/LinkSoul/Chinese-Llama-2-7b 这种有多个文件

pytorch_model-00001-of-00003.bin
pytorch_model-00002-of-00003.bin
pytorch_model-00003-of-00003.bin

那么可以用 Hugging Face库的模型的python常用加载方式:

from transformers import AutoModel, AutoConfig
from pathlib import Path

model_name = "模型名称"
cache_dir = "自定义路径"  #可以是当前路径 cache_dir = str( Path(os.getcwd()) / "models" / "7B"  )

config = AutoConfig.from_pretrained(model_name, cache_dir=cache_dir)
model = AutoModel.from_pretrained(model_name, config=config, cache_dir=cache_dir)

通过将cache_dir参数设置为你想要的路径,你可以将模型文件保存在指定的位置。请确保指定的路径是存在的,并且具有适当的读写权限。

Reference:

[1]llama.cpp:https://github.com/ggerganov/llama.cpp

[2]ggml-model-q4_0.bin 文件下载地址:https://huggingface.co/rffx0/Chinese-Llama-2-7b-ggml-model-q4_0/resolve/main/ggml-model-q4_0.bin

[3]llama.cpp的python绑定库的安装使用:https://github.com/abetlen/llama-cpp-python#installation-with-openblas–cublas–clblast–metal

[4]开软技巧博客文章地址:https://www.chinaoss.net/article/load-llama-model-file-from-local-disk-by-commandline-or-by-python.html

加好友请备注:chinaoss
您可以在微信公众号联系我们
我们将24小时内回复。
取消