当前位置:首页 » 《休闲阅读》 » 正文

Llama 3.1本地部署指南:Ollama、OpenWeb UI与Spring AI

20 人参与  2024年12月01日 18:01  分类 : 《休闲阅读》  评论

点击全文阅读


本文介绍如何使用 Ollama 在本地部署 Llama 3.1:8B 模型,并通过 OpenWeb UI 和 Spring AI 来增强模型交互体验和简化 API 的调用过程。

Ollama

Ollama 是一个开源的大语言模型服务工具,旨在简化大模型的本地部署和运行过程。用户只需要输入一行命令(如: ollama run llama3.1 ),即可在本地硬件环境中部署和使用大语言模型。Ollama 还提供了 REST API 接口,下文中会介绍如何使用 Spring AI 集成 Ollama,实现与大模型 API 接口的交互。

Ollama 支持下载 Llama、Gemma、qwen 和 glm4 等多种主流大语言模型和代码语言模型,我们可以在 官网 查看 Ollama 支持的所有模型及其相关信息和使用命令。 本机运行 7B 参数量的模型至少需要 8GB 内存,运行 13B 参数量的模型至少需要 16GB 内存,运行 33B 参数量的模型至少需要 32GB 内存。

模型参数大小使用命令
Llama 3.18B4.7GBollama run llama3.1
Llama 3.170B40GBollama run llama3.1:70b
Llama 3.1405B231GBollama run llama3.1:405b
Gemma 29B5.5GBollama run gemma2
Gemma 227B16GBollama run gemma2:27b
qwen27B4.4GBollama run qwen2
qwen272B41GBollama run qwen2:72b
glm49B5.5GBollama run glm4

下载

访问 Ollama 官网,选择操作系统,然后点击 download 按钮进行下载。操作系统要求 MacOS 11 和 Windows 10 及以上版本。下载完成后的 Ollama 其实是一个命令行工具,我们可以直接在终端中使用 Ollama。(执行 ollama --help 可查看 Ollama 提供的的命令)

部署 Llama 3.1

在终端中执行命令 ollama run llama3.1 ,即可下载 Llama3.1:8B 模型。模型下载完成后,会自动启动大模型,进入命令行交互模式,直接输入指令,就可以和模型进行对话了。

通过 Ollama,我们轻松的实现了本地大模型的部署和命令行式的交互,但是为了更好的使用大模型,以及对大模型进行管理和配置等方面的需求,就需要借助 Ollama 社区中一些强大的工具了,其中代表性的工具之一是 OpenWeb UI(之前称为 Ollama WebUI)。

OpenWeb UI

OpenWeb UI 是一个功能丰富且易于使用的大模型管理工具,它为用户提供了一个直观的图形化界面,以及广泛的功能和灵活的配置选项。

方便部署:使用 Docker 实现简单快捷的部署。用户友好的页面:国际化多语言支持,提供多种主题样式,响应式设计,模型参数、Prompt 等便捷配置。功能丰富:本地 RAG 支持,Web 浏览功能(可以在对话中访问网站),语音交互等。API 支持:支持 OpenAI API 和其他兼容 API。多模型支持:支持同时管理和操作多个大语言模型。

下载

部署 OpenWeb UI 需要使用 Docker 环境,我本机的 Docker 版本是 24.0.2。OpenWeb UI 提供了集成 Ollama 的部署方式, 因为 Ollama 已经下载到我本机上了,所以只需要执行以下命令即可完成部署。

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

容器启动成功后,可以访问 3000 端口,查看页面。首次登陆需要先填写邮箱和密码注册账号。登陆进来后,可以看到,OpenWeb UI 已经自动加载到了我们本地部署的 Llama3.1 模型。

在模型编辑页面,我们可以修改模型的配置参数和 Prompt 等信息,并利用 Document 和 Tools 等工具来增强模型的能力和使用体验。

Spring AI

Spring AI 是 Spring 生态里人工智能方向的应用框架,它提供了与各种大语言模型交互的高级抽象接口,极大地简化了Java 人工智能应用程序的开发过程,让 Java 开发者也能够开发 AI 应用。

接下来将详细介绍 Spring AI 的使用流程,以及如何调用 Ollama 的 API 接口,与我们本地的 Llama 3.1 进行交互。

集成 Ollama

创建一个新的 Spring Boot 项目,版本要求 Spring Boot 3 + JDK 17。引入 Spring AI + Ollama 依赖。
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>3.3.1</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <groupId>com.cleaner</groupId>    <artifactId>culture-ai</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>Cleaner-ai</name>    <description>culture-ai</description>    <properties>        <java.version>17</java.version>        <spring-ai.version>1.0.0-SNAPSHOT</spring-ai.version>    </properties>    <dependencies>        <!-- ollama -->        <dependency>            <groupId>org.springframework.ai</groupId>            <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>    </dependencies>    <dependencyManagement>        <dependencies>        <!-- spring ai -->            <dependency>                <groupId>org.springframework.ai</groupId>                <artifactId>spring-ai-bom</artifactId>                <version>${spring-ai.version}</version>                <type>pom</type>                <scope>import</scope>            </dependency>        </dependencies>    </dependencyManagement>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build>    <repositories>        <!-- spring ai -->        <repository>            <id>spring-milestones</id>            <name>Spring Milestones</name>            <url>https://repo.spring.io/milestone</url>            <snapshots>                <enabled>false</enabled>            </snapshots>        </repository>        <repository>            <id>spring-snapshots</id>            <name>Spring Snapshots</name>            <url>https://repo.spring.io/snapshot</url>            <releases>                <enabled>false</enabled>            </releases>        </repository>    </repositories></project>
编写 application.yaml 配置文件,添加 Ollama 的相关配置。
server:  port: 8888spring:  application:    name: Cleaner-AI  ai:    ollama:      # ollama API Server 地址      base-url: http://localhost:11434      chat:        enabled: true        # 使用的模型名称        model:          llama3.1:8b        options:          temperature: 0.7
编写接口。
package com.cleaner.ai.controller;import jakarta.annotation.Resource;import org.springframework.ai.chat.messages.UserMessage;import org.springframework.ai.chat.model.ChatResponse;import org.springframework.ai.chat.prompt.Prompt;import org.springframework.ai.ollama.OllamaChatModel;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import reactor.core.publisher.Flux;@RestController@RequestMapping("/ollama")public class OllamaController {    @Resource    private OllamaChatModel ollamaChatModel;    /**     * 流式对话     *     * @param message 用户指令     * @return     */    @GetMapping("/streamChat")    public Flux<ChatResponse> generateStream(@RequestParam("message") String message) {        message = "请使用中文简体回答:" + message;        Prompt prompt = new Prompt(new UserMessage(message));        return ollamaChatModel.stream(prompt);    }    /**     * 普通对话     * @param message   用户指令     * @return     */    @GetMapping("/chat")    public String generate(@RequestParam("message") String message) {        message = "请使用中文简体回答:" + message;        Prompt prompt = new Prompt(new UserMessage(message));        ChatResponse chatResponse = ollamaChatModel.call(prompt);        String content = chatResponse.getResult().getOutput().getContent();        System.out.println("content = " + content);        return chatResponse.toString();    }}
调用接口,可以看到 API 接口调用成功。(8B 模型生成的回答内容还是比较有限)

总结

本地部署的大模型可以脱离网络离线使用,但是要达到实际使用的要求,还需要对模型进行细致化的配置,当然部署模型的参数量越大,使用效果会更好,但也要考虑本机电脑的配置限制。对于学习了解大模型及其相关的技术知识而言,在条件允许的情况下,本机部署确实是一个不错的选择。

在这里插入图片描述

大模型&AI产品经理如何学习

求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。

1.学习路线图

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

在这里插入图片描述

在这里插入图片描述

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方图片前往获取

3.技术文档和电子书

这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
在这里插入图片描述

4.LLM面试题和面经合集

这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
在这里插入图片描述

?学会后的收获:?
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

?获取方式:
?有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】?

在这里插入图片描述


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/195086.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1