如今,AI工具已变得司空见惯,你可能每天都在使用它们。保护你的个人和商业机密数据的关键途径之一,就是在自己的基础配置上运行自己的AI。

 

如今,AI工具已变得司空见惯,你可能每天都在使用它们。保护你的个人和商业机密数据的关键途径之一,就是在自己的基础配置上运行自己的AI。

本指南将向你介绍如何在自己的计算机上托管一个开源大语言模型(LLM)。这样做有助于确保你不会通过基于云的AI解决方案将数据泄露给第三方公司。

前提条件

  • 一定的AI知识:我将在文章中介绍与我们操作相关的主要概念,具备一些关于大语言模型(LLMs)的基础知识将有助于你更好地理解这些内容。不过,即使你一无所知,也不用担心——你仍然会发现这很有趣。
  • 一台性能不错的电脑:系统至少需要配备16GB的内存、多核CPU,以及为获得最佳性能而配备的GPU。(如果你的电脑配置较低,操作可能会相当缓慢)
  • 网络连接:需要网络连接来下载和安装模型。
  • 时间和耐心:由于下载、安装和配置过程可能较为复杂且耗时,因此你需要具备足够的时间和耐心来完成这些步骤。

什么是LLM?

大语言模型(LLMs),即Large Language Models,是先进的人工智能系统,经过训练能够理解并生成自然的人类可读语言。它们利用算法来处理和理解自然语言,并通过大量信息的训练来掌握数据中的模式和关系。

像OpenAI、Anthropic和Meta这样的公司已经开发出了LLMs,你可以利用它们来执行诸如内容生成、代码分析、旅行规划等任务。

云端AI与自托管AI的比较

在决定是否在本地托管AI模型之前,了解这种模式与云端AI解决方案的差异至关重要。这两种选项各有优势,适用于不同的应用场景。

云端AI解决方案

这些服务由OpenAI、Google或AWS等提供商托管和维护。例如,OpenAI的GPT模型、Google Bard和AWS SageMaker等。你可以通过互联网使用API或其端点访问这些模型。

关键特性:

  • 易用性:设置简便,你只需通过API集成或通过网页访问即可。
  • 可扩展性:由于由公司管理,因此能更好地处理大量工作负载和并发请求。
  • 前沿模型:云端通常提供最新且功能最强大的模型。
  • 数据依赖性:你的数据会被发送到云端进行处理,这可能会引发隐私担忧。
  • 持续成本:尽管一些模型是免费的,但其他大部分模型通常会根据请求或使用情况(如更强大或最新的模型)进行收费,从而成为一项运营成本。

自托管AI

采用这种模式,你可以在自己的硬件上运行模型。可以使用Ollama等工具下载并托管Llama 2、GPT-J或Mistral等开源LLM。

关键特性:

  • 数据隐私:你的数据保留在你的基础配置上,使你能够对其进行完全控制。
  • 长期成本效益:虽然需要前期投资硬件,但可以避免重复的API费用。
  • 可定制性:你可以对模型进行微调,使其适应特定需求。
  • 技术要求:需要功能强大的硬件、设置工作和技术知识。
  • 可扩展性有限:最适合的应用场景是个人或小规模使用。

你应该选择哪种方案?

如果你需要快速且可扩展地访问高级模型,并且不介意将数据与第三方共享,那么云端AI解决方案可能是更好的选择。另一方面,如果数据安全、定制需求或成本节约是你的首要考虑因素,那么在本地托管LLM(大语言模型)可能是更好的选择。

如何在你的机器上本地运行LLM(大语言模型)?

有多种解决方案可以让你在自有的基础配置上运行特定的开源LLM。

尽管大多数本地托管解决方案都聚焦于开源LLM,如Llama 2、GPT-J或Mistral,但根据使用条款,某些专有或授权模型也可以在本地运行。

  • 开源模型:这些模型可免费获取,无需许可限制即可下载、修改和托管。例如,Llama 2(由Meta开发)、GPT-J和Mistral等。
  • 提供本地选项的专有模型:有些公司可能会提供其模型的可下载版本以供离线使用,但这通常需要特定的许可或硬件。例如,英伟达(NVIDIA)的NeMo框架提供了在其基础配置上托管模型的工具,而一些较小的公司可能会为企业客户提供其专有LLM的可下载版本。

请记住,如果你要运行自己的LLM,你将需要一台功能强大的计算机(配备良好的GPU和CPU)。如果你的计算机性能不够强大,你可以尝试运行更小、更轻量级的模型,尽管这可能会降低系统的运行速度。

以下是我为本指南使用的一个合适系统配置的示例:

  • CPU:Intel Core i7 13700HX
  • 内存:16GB DDR5
  • 存储:512GB SSD
  • 显卡:Nvidia RTX 3050(6GB显存)在本指南中,你将使用Ollama来下载并在你的电脑上运行AI模型。

什么是Ollama?

Ollama是一款旨在简化直接在计算机上运行开源大型语言模型(LLMs)过程的工具。它充当本地模型管理器和运行时环境,负责从下载模型文件到设置可与模型交互的本地环境等一切事务。

Ollama可帮助你完成以下任务:

  • 管理模型:Ollama提供了一种简单的方法来浏览、下载和管理不同的开源模型。你可以在其官方网站上查看支持的模型列表。
  • 轻松部署:只需几条命令,你就可以设置一个功能齐全的环境来运行和与LLMs进行交互。
  • 本地托管:模型完全在你的基础配置上运行,确保你的数据保持私密和安全。
  • 集成不同模型:它支持使用Python或JavaScript等编程语言将模型集成到你自己的项目中。

通过使用Ollama,你无需深入了解设置机器学习框架或管理依赖项的复杂性。它简化了该过程,特别是对于那些希望尝试LLMs而无需深厚技术背景的人来说。

你可以通过其网站上的“下载”按钮非常方便地安装Ollama。

如何使用Ollama安装/运行你的模型

在安装完Ollama之后,请遵循以下步骤来安装并使用你的模型:

1.开你的浏览器,并访问localhost:11434以确保Ollama正在运行。

2.接下来,打开命令提示符,并输入ollama run <model_name>。在这里,将<model_name>替换为Ollama所支持的你想要运行的模型名称,例如Meta的Llama2或Mistral。

3.等待安装过程完成。

4.在出现>>> Send a message (/? for help)的提示符时,向AI输入一条消息,并按下Enter键。

你已经成功安装了模型,现在可以与它进行聊天了!

用新安装的模型创建聊天机器人

在你个人的基础架构中运行开源模型,你可以随意更改和使用它。甚至可以利用Python、JavaScript和其他语言中的ollama模块,为个人应用而创建本地聊天机器人或应用程序。

现在,让我们来了解一下如何在几分钟内使用它在Python中构建一个聊天机器人。

步骤1:安装Python

如果尚未安装Python,请从Python官方网站下载并安装。为确保最佳兼容性,请避免使用最新的Python版本,因为某些模块可能尚未完全支持它。相反,请选择最新的稳定版本(通常是最新发布版本之前的版本),以确保所有必需模块都能顺畅运行。

在安装Python时,请确保为安装程序提供管理员权限,并勾选“添加到PATH”复选框。

步骤2:安装Ollama

接下来,你需要在保存文件的目录中打开一个新的终端窗口,在文件资源管理器中打开该目录,右键单击后选择“在终端中打开”(如果你使用的是Windows 10或更早版本,则点击“使用命令提示符或PowerShell打开”)。

输入pip install ollama并按Enter键。这将为Python安装ollama模块,以便你可以从Python访问模型以及该工具提供的函数。请等待该过程完成。

步骤3:添加Python代码

在你的文件系统中容易访问的位置创建一个带有.py扩展名的Python文件。使用你喜欢的代码编辑器打开该文件,如果没有安装代码编辑器,可以使用浏览器中的VS Code在线版本。

现在,在你的Python文件中添加以下代码:

from ollama import chat

def stream_response(user_input):
 """Stream the response from the chat model and display it in the CLI."""
 try:
 print("\nAI: ", end="", flush=True)
 stream = chat(model='llama2', messages=[{'role': 'user', 'content': user_input}], stream=True)
 for chunk in stream:
 content = chunk['message']['content']
 print(content, end='', flush=True)
 print() 
 except Exception as e:
 print(f"\nError: {str(e)}")

def main():
 print("Welcome to your CLI AI Chatbot! Type 'exit' to quit.\n")
 while True:
 user_input = input("You: ")
 if user_input.lower() in {"exit", "quit"}:
 print("Goodbye!")
 break
 stream_response(user_input)
if __name__ == "__main__":
main()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.

如果你不理解Python代码,这里基本上解释了它的功能:

  • 首先,从ollama库中导入聊天模块,该模块包含与计算机上的Ollama应用程序集成的预写代码。
  • 然后声明一个stream_response函数,该函数将你的提示传递给指定的模型,并以流式传输(即生成时逐块提供响应)的方式将实时响应返回给你。
  • 接着在主函数中,向终端打印欢迎文本。它获取用户输入,并将其传递给stream_response函数,所有这些都被包裹在一个while True或无限循环中。这允许我们向AI提问,而不会中断执行过程。我们还指定,如果用户输入包含“exit”或“quit”,代码将停止执行。

第4步:编写提示

现在回到终端窗口,输入python filename.py,将filename替换为你设置的实际文件名,然后按Enter键。

你应该会看到一个提示说“You:”,就像我们在代码中提到的那样。输入你的提示并按Enter键。你应该能看到AI响应正在被流式传输。要停止执行,请输入提示“exit”,或关闭终端窗口。

你甚至可以安装JavaScript或其他支持语言的模块,并在你的代码中集成AI。请随意查阅Ollama官方文档,了解你可以使用AI模型编写什么代码。

如何通过微调自定义模型

什么是微调?

微调是指将一个预训练的语言模型在特定且自定义的数据集上进行进一步训练,以满足特定需求的过程。虽然大型语言模型(LLMs)已经在大规模数据集上进行了训练,但它们可能并不总是完全符合你的需求,这时可以通过微调让模型更适合你的特定用例。

如何微调模型

微调模型需要以下要素:

  • 预训练模型:建议从强大的开源LLM开始,如LLaMA、Mistral或Falcon。
  • 优质数据集:数据集是用于训练、测试或评估机器学习模型(包括LLMs)的数据集合。数据集的质量和相关性直接影响模型在给定任务上的表现。请使用与你领域或任务相关的数据集。例如,如果你希望用AI撰写博客文章,那么就用它训练高质量博客内容。
  • 充足的资源:微调涉及重新训练模型,这需要大量的计算资源(最好是配有强大GPU的计算机)。
    你可以使用多种工具来微调你的模型。Unsloth就是这样一个快速选项,它可用于使用任何数据集来微调模型。

自托管LLMs的好处是什么?

如上所述,自托管LLMs有多种原因。简而言之,以下是其中一些主要好处:

  • 增强的数据隐私和安全:因为你的数据不会离开你的计算机,你可以完全控制它。
  • 节省成本:你无需定期支付API订阅费用。相反,这是一次性付费,足够获得强大的基础配置,从而在长期内帮助你运行。
  • 高度可定制性:你可以通过微调或在自己的数据集上训练来根据特定需求定制模型。
  • 更低的延迟

何时不应使用自托管AI?

出于多种原因,自托管AI可能并不适合你。首先,你或许不具备运行模型所需的系统资源,或者你不原也无法对系统进行升级。

其次,你可能缺乏设置自身模型以及对其进行微调所必需的技术知识,亦或也没有足够的时间投入其中。虽然这并非难以完成之事,但确实也需要一些背景知识和特定技能。如果你不了解如何排除可能出现的错误,这也会成为一个棘手的问题。

此外,如果你需要模型全天候不间断运行,而你可能缺乏处理其基础配置的能力。

上述这些问题并非无法解决,但它们很可能会对你在选择使用基于云的解决方案还是托管自己的模型这一决策上产生影响。

结论

如果你高度重视数据隐私、成本效益以及定制化,那么自行托管大型语言模型(LLMs)或许会带来颠覆性的变化。

诸如Ollama之类的工具,使得将强大的AI模型部署到你的个人基础配置上变得前所未有的简单。尽管自行托管也面临一些挑战,但它能让你掌控自己的数据,并灵活地根据需求调整模型。

只是在决定采用这种方式之前,请务必评估你的技术能力、硬件资源和项目需求。倘若你需要可靠性、可扩展性以及快速访问前沿功能的能力,那么基于云的大型语言模型或许仍然是更优的选择。

如果你喜欢这篇文章,千万别忘了表达你的支持,并在X平台和LinkedIn上关注我,以便与我保持联系。此外,我还会在YouTube上发布简短但信息丰富的技术内容,别忘了查看我的视频。

译者介绍

刘涛,51CTO社区编辑,某大型央企系统上线检测管控负责人。

文章来自:51CTO

Loading

作者 yinhua

发表回复