当前位置:   article > 正文

个人电脑本地部署LLM

本地部署llm

普通电脑配置即可本地运行大模型,本地部署LLM最简单的方法

OLLAMA

Ollama是一个开源框架,专门设计用于在本地运行大型语言模型(LLM)。它的主要功能是在Docker容器中部署和管理LLM,使得在本地运行大模型的过程变得非常简单。Ollama通过简单的安装指令,允许用户执行一条命令就能在本地运行开源大型语言模型,例如Llama 2。

Ollama的特点包括:

  • 开箱即用:用户可以通过一条命令快速启动模型。
  • 可扩展性:支持导入更多的自定义模型,与多种工具集成使用。
  • 轻量化:不需要太多资源,适合在个人电脑上运行。

Ollama支持的平台包括Mac、Linux和Windows,并提供了Docker镜像。对于Mac和Windows用户,可以直接下载安装包进行安装。Linux用户则可以通过一键安装命令进行安装。

使用Ollama后,用户可以在本地机器上轻松构建和管理LLMs,访问和运行一系列预构建的模型,或者导入和定制自己的模型,无需关注复杂的底层实现细节。这为希望在本地环境中探索和开发基于LLM的应用的开发者提供了便利。

Phi2

Phi-2是微软发布的一款小型语言模型,它拥有27亿参数,相比于其他大型语言模型(LLM)如GPT-3的1750亿参数,Phi-2的参数更少,训练更快。尽管规模较小,Phi-2在多个基准测试中展现出了卓越的性能,这些测试评估了模型在推理、语言理解、数学、编码和常识能力方面的表现。

Phi-2是基于Transformer架构的,它在处理NLP和编码领域的综合合成数据集和Web数据集时,共训练了1.4T个令牌。该模型在96个A100 GPU上训练了14天。值得注意的是,Phi-2没有经过基于人类反馈的增强学习(RLHF)的校准,也没有进行指导性的微调。在评估中,Phi-2在复杂的多步推理任务中优于规模大25倍的模型,甚至在某些测试中超过了Google最近发布的Gemini Nano 2的性能。

Phi-2的训练数据包括专门用于教授模型常识推理和通识知识的合成数据集,以及经过精心挑选和过滤的Web数据。这些数据的选择侧重于教育价值和内容质量,以提高模型的性能和安全性。

Phi-2的局限性包括生成不准确的代码和事实、对指令的不可靠响应、语言限制,以及潜在的社会偏见。因此,尽管Phi-2可用于各种研究,如可解释性、安全性改进或微调实验,但在使用时需要保持谨慎和批判性思维。Phi-2只能用于研究目的,不支持商业用途

安装Ollama

下载ollama
安装后打开ollama
终端中使用命令操作即可

部署llama2

ollama run llama2
  • 1

在这里插入图片描述

部署Phi2

ollama run phi:2.7b-chat-v2-fp16
  • 1

在这里插入图片描述

ollama常用命令

以下是一些Ollama常用命令:

  1. ollama run <model_name>:运行指定名称的模型。例如,ollama run llama2会启动Llama 2模型。

  2. ollama list:列出所有可用的模型。

  3. ollama show <model_name>:显示指定模型的详细信息。

  4. ollama create <model_name>:从一个Modelfile创建一个新模型。

  5. ollama pull <model_name>:从模型注册表中拉取指定模型。

  6. ollama push <model_name>:将指定模型推送到模型注册表。

  7. ollama cp <source_model> <destination_model>:复制一个模型到另一个模型。

  8. ollama rm <model_name>:删除指定模型。

其他本地部署LLM方法

参考文档

  • Hugging Face and Transformers
  • LangChain
  • Llama.cpp
  • Llamafile
  • GPT4ALL

API调用脚本

使用python调用api,方便实现各种功能的AI化,比如linux错误日志询问等等。

#!/usr/bin/python3
#coding: utf-8

import json
import requests

model = "llama3"

def chat(messages):
    r = requests.post(
        "http://localhost:11434/api/chat",
        json={"model": model, "messages": messages, "stream": True},
    )
    r.raise_for_status()
    output = ""
    for line in r.iter_lines():
        body = json.loads(line)
        if "error" in body:
            raise Exception(body["error"])
        if body.get("done") is False:
            message = body.get("message", "")
            content = message.get("content", "")
            output += content
            print(content, end="", flush=True)
        if body.get("done", False):
            message["content"] = output
            return message

def main():
    messages = []
    while True:
        user_input = input("Enter a prompt: ")
        if not user_input:
            exit()
        print()
        messages.append({"role": "user", "content": user_input})
        message = chat(messages)
        messages.append(message)
        print("\n\n")

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
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/817240
推荐阅读
相关标签
  

闽ICP备14008679号