在本地CPU上运行小型语言模型的7个步骤

在本地 CPU 上运行小型语言模型的七个步骤

 

第一步:介绍

 

语言模型已经彻底改变了自然语言处理领域。尽管像GPT-3这样的大型模型抢尽了头条,但小型语言模型也具有多种优势,且受欢迎且易于使用。在本文中,我们将详细探讨小型语言模型的重要性、用途以及所有实现步骤。

小型语言模型是其较大版本的紧凑版本。它们具有以下几个优势:

  1. 效率:与大型模型相比,小型模型需要更少的计算资源,适用于资源有限的环境。
  2. 速度:它们可以更快地进行计算,例如基于给定输入生成文本,适用于每天流量较高的实时应用。
  3. 定制:您可以根据特定领域任务的要求,对小型模型进行微调。
  4. 隐私:较小的模型可以在不使用外部服务器的情况下使用,确保数据的隐私性和完整性。

  

小型语言模型的多个应用包括聊天机器人、内容生成、情感分析、问答等等。

 

第二步:设置环境

 

在我们深入了解小型语言模型的工作之前,您需要设置环境,包括安装必要的库和依赖项。选择正确的框架和库来在本地CPU上构建语言模型非常重要。流行的选择包括基于Python的库,如TensorFlow和PyTorch。这些框架为机器学习和基于深度学习的应用提供了许多预建工具和资源。

安装所需的库

在这一步中,我们将安装”llama-cpp-python”和”ctransformers”库,以介绍小型语言模型。您必须打开终端并运行以下命令进行安装。在运行以下命令时,请确保您的系统上已安装Python和pip。

pip install llama-cpp-pythonpip install ctransformers -q

 

输出:

 

 

第三步:获取预训练的小型语言模型

 

现在我们的环境已经准备好,我们可以获取一个预训练的小型语言模型以供本地使用。对于小型语言模型,我们可以考虑使用较简单的架构,例如LSTM或GRU,其计算成本较低于更复杂的模型,如转换器。您还可以使用预训练的词嵌入,以提高模型的性能并减少训练时间。但为了快速工作,我们将从网络上下载一个预训练模型。

 

下载预训练模型

 

您可以在Hugging Face等平台上找到预训练的小型语言模型(https://huggingface.co/models)。这是对该网站的快速介绍,您可以轻松观察到提供的模型序列,并通过登录该应用程序轻松下载这些开源模型。

  

您可以从此链接轻松下载所需的模型,并将其保存到本地目录以备将来使用。

from ctransformers import AutoModelForCausalLM

 

第4步:加载语言模型

 

在上一步中,我们确定了来自Hugging Face的预训练模型。现在,我们可以通过将该模型加载到我们的环境中来使用它。我们在下面的代码中导入了ctransformers库中的AutoModelForCausalLM类。这个类可以用于加载和处理条件语言建模的模型。

  

# 加载预训练模型
lm = AutoModelForCausalLM.from_pretrained('TheBloke/Llama-2-7B-Chat-GGML', model_file='llama-2-7b-chat.ggmlv3.q4_K_S.bin')

 输出:

 

 

第5步:模型配置

 

可以根据实际需求对小型语言模型进行微调。如果您需要在真实应用中使用这些模型,主要的考虑因素是效率和可扩展性。为了使小型语言模型相比大型语言模型更高效,您可以调整上下文大小和批处理(将数据分为更小的批次以获得更快的计算速度),从而克服可扩展性问题。

 

修改上下文大小

 

上下文大小确定了模型考虑的文本量。根据您的需求,可以选择上下文大小的值。在本例中,我们将将这个超参数的值设置为128个标记。

model.set_context_size(128)

 

高效批处理

 

通过引入批处理技术,可以同时处理多个数据段,可以同时处理查询并帮助将应用程序扩展到大量用户。但是,在决定批处理大小时,必须仔细检查系统的能力。否则,系统可能会因为负载过重而出现问题。

model.set_batch_size(16)

 

第6步:生成文本

 

到目前为止,我们已经完成了模型的构建、调整和保存。现在,我们可以基于我们的需求快速测试它,并检查它是否提供了我们期望的相同输出。因此,让我们输入一些查询并根据我们加载和配置的模型生成文本。

for word in llm('Explain something about VoAGI', stream=True):
    print(word, end='')

 输出:

 

 

第7步:优化和故障排除

 

为了使大多数输入查询的结果在小型语言模型中得到适当的结果,可以考虑以下几点:

  1. 微调:如果您的应用程序需要高性能,即要求查询的输出在较短的时间内解决,那么您必须根据特定的数据集对模型进行微调,即在训练模型的语料库上微调。
  2. 缓存:使用缓存技术,可以将基于用户的常用数据存储在RAM中,这样当用户再次要求该数据时,可以轻松地提供数据,而不必再次从磁盘获取,从而节省相对较长的时间,加快未来请求的速度。
  3. 常见问题:如果在创建、加载和配置模型时遇到问题,可以参考文档和用户社区提供的故障排除技巧。

 

总结

 

在本文中,我们讨论了如何按照本文中概述的七个简单步骤,在本地CPU上创建和部署一个小型语言模型。这种成本效益的方法为各种语言处理或计算机视觉应用打开了大门,并成为更高级项目的垫脚石。但是在开展项目时,您必须记住以下事项以克服任何问题:

  1. 定期保存训练检查点,以确保在训练过程中出现中断时能够继续训练或恢复模型。
  2. 对代码和数据流水线进行优化,以实现有效的内存使用,特别是在使用本地CPU时。
  3. 如果未来需要扩大模型规模,请考虑使用GPU加速或基于云的资源。

总之,小型语言模型为各种语言处理任务提供了一种灵活高效的解决方案。通过正确的设置和优化,您可以有效地利用它们的力量。

[Aryan Garg](https://www.linkedin.com/in/aryan-garg-1bbb791a3/)是一名电气工程专业的本科生,目前是大四学生。他对Web开发和机器学习领域很感兴趣。他一直在追求这个兴趣,并渴望在这些方向上更多地工作。