本地使用LLM的方法总结

最近大语言模型实在太火了,创造了一批的上层应用,对于普通人来说其实很难去训练一个大模型,顶多去微调一下.

在线的GPT服务有很多,我个人推荐Poe,支持许多模型并允许自己上传一些微调后的模型,另外有些模型可能不在Poe中,可以去它们的官网使用.

除了这种调用API或者web app模式之外,其实在本地运行一些大模型已经可以很好使用了,这里找到了一篇英文博客Six Ways of Running Large Language Models (LLMs) Locally (January 2024) (kleiber.me).

介绍一些本地使用大语言模型的方法.

llama.cpp

使用c++来做inference,相比于Python节省内存以及提升运行速度.

这也是其他许多本地运行大模型的应用的底层. 使得只需要CPU就能使用大模型.

作为一个用户,并不需要使用这个库.本身支持许多模型的推理.

image-20240426192805693

此外也提供了其它语言的binding

Transformers

使用HuggingFace提供的API(transformers)访问存储在Hugging Face Hub中的模型,这种也是属于编程方式,适合进行微调模型.因为Hugging Face也提供了许多微调的API,比如PEFT.

from huggingface_hub import snapshot_download
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline

HF_MODEL = 'lmsys/fastchat-t5-3b-v1.0'
HF_MODEL_PATH = HF_MODEL.split('/')[1]

# Download the model from the Hugging Face Hub
# Alternatively: git lfs install && git clone https://huggingface.co/lmsys/fastchat-t5-3b-v1.0
snapshot_download(HF_MODEL, local_dir=HF_MODEL_PATH)

# Create the pipeline
tokenizer = AutoTokenizer.from_pretrained(HF_MODEL_PATH, legacy=False)
model = AutoModelForSeq2SeqLM.from_pretrained(HF_MODEL_PATH)
pipeline = pipeline('text2text-generation', model=model, tokenizer=tokenizer, max_new_tokens=100)

# Run inference
result = pipeline('Tell a joke about LLMs.')

print(result[0]['generated_text'])

vLLM

也是一个库,vLLM 支持许多常见的 HuggingFace 模型,并能为与 OpenAI 兼容的 API 服务器提供服务

from vllm import LLM
llm = LLM(model='facebook/opt-125m')
output = llm.generate('Tell a joke about LLMs.')
print(output)
from vllm import LLM, SamplingParams

prompts = [
    'Tell a joke about LLMs.',
]

sampling_params = SamplingParams(temperature=0.75, top_p=0.95)

llm = LLM(model='facebook/opt-125m')

outputs = llm.generate(prompts, sampling_params)

print(outputs[0].prompt)
print(outputs[0].outputs[0].text)

上面两个都是面向开发者的,如果只是简单的使用,可以看看下面三个工具.

Ollama

Ollama支持许多开源模型,但是测试之后发现参数量少一点的大模型表现真的不太好. 比如llama2:7B.

image-20240426201711357

可以使用命令行提问.

也可以发送请求

curl -X POST http://localhost:11434/api/generate -d '{
  "model": "llama2",
  "prompt":"Why is the sky blue?"
 }'

也有webui提供支持open-webui/open-webui: User-friendly WebUI for LLMs (Formerly Ollama WebUI) (github.com)

GPT4All

GPT4All GPT4All既是一系列模型,也是一个用于训练和部署模型的生态系统.与ollama类似但是更加全面,支持的模型多也自带Web UI.

ModelBoolQPIQAHellaSwagWinoGrandeARC-eARC-cOBQAAvg
GPT4All-J 6B v1.073.474.863.464.754.93640.258.2
GPT4All-J v1.1-breezy7475.163.263.655.434.938.457.8
GPT4All-J v1.2-jazzy74.874.963.663.856.635.34158.6
GPT4All-J v1.3-groovy73.674.363.863.557.73538.858.1
GPT4All-J Lora 6B68.675.866.263.556.435.740.258.1
GPT4All LLaMa Lora 7B73.177.672.167.851.140.440.260.3
GPT4All 13B snoozy83.379.27571.360.944.243.465.3
GPT4All Falcon77.679.874.970.167.943.442.665.2
Nous-Hermes79.578.98071.974.250.946.468.8
Nous-Hermes283.980.780.171.375.752.146.270.0

GPT4All Model Selection

LM Studio

LM Studio - Discover, download, and run local LLMs类似GPT4All,界面看起来更复杂

LM Studio Models

也可以发送请求

curl http://localhost:1234/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{ 
  "messages": [ 
    { "role": "system", "content": "You are a helpful coding assistant." },
    { "role": "user", "content": "How do I init and update a git submodule?" }
  ], 
  "temperature": 0.7, 
  "max_tokens": -1,
  "stream": true
}'

总结

就目前而言, Ollama或者GPT4All是绝对够用的,上面三个工具选择一个即可. 如果想要在服务器上提供API也是不错的.

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
LLM(Language Learning Model)是一个基于预训练模型的自然语言处理框架,可以用于各种NLP任务,如文本分类、命名实体识别、情感分析等。下面是LLM模型的本地部署及微调流程: 1. 下载预训练模型 LLM模型基于预训练模型,可以通过Hugging Face官网下载预训练模型。选择相应的模型并下载到本地。 2. 安装LLM 可以使用pip命令安装LLM,命令如下: ``` pip install llm ``` 3. 加载预训练模型 使用LLM的load方法加载预训练模型,代码示例如下: ```python from llm.modeling import LLMForSequenceClassification model = LLMForSequenceClassification.from_pretrained('path/to/pretrained_model') ``` 4. 微调模型 使用LLM的train方法微调模型,代码示例如下: ```python import torch from llm.data import TextDataset, TextDataLoader from llm.training import LLMTrainer train_dataset = TextDataset('path/to/train_data', model.tokenizer) train_loader = TextDataLoader(train_dataset, batch_size=32, shuffle=True) optimizer = torch.optim.Adam(model.parameters(), lr=5e-5) trainer = LLMTrainer(model, optimizer) trainer.train(train_loader, epochs=3) ``` 5. 保存微调后的模型 使用LLM的save_pretrained方法保存微调后的模型,代码示例如下: ```python model.save_pretrained('path/to/fine_tuned_model') ``` 以上就是LLM模型的本地部署及微调流程。需要注意的是,在微调模型时,需要准备好训练数据,并且调整好超参数,以达到最佳的微调效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

procoder338

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

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

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

打赏作者

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

抵扣说明:

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

余额充值