作者:望宸&刘军

今年的春节注定不寻常,开源大模型领域的“国货之光”们接连发布新版本,多项指标对标 OpenAI 的正式版(收费服务)。

  • 1月20日,DeepSeek R1 发布,在数学、代码、自然语言推理等任务上,性能比肩 OpenAI o1 正式版。
  • 1月27日,Qwen2.5-1M:支持 100万 Token 上下文,其中 14B 的杯型在短文本任务上实现了和 GPT-4o-mini 相近的性能,同时上下文长度是 GPT-4o-mini 的八倍;长上下文任务在多个数据集上稳定超越 GPT-4o-mini。
  • 1月20日,DeepSeek Janus-Pro 发布,多模态理解和生成模型,其中 7B 的杯型在 GenEval 和 DPG-Bench 基准测试中超过 OpenAI 的 DALL-E 3 和 Stable Diffusion。
  • 1月28日,Qwen2.5-VL 发布,视觉语言模型,在文档理解、视觉问答、视频理解和视觉 Agent 等维度的多项指标超过 GPT-4o。
  • 1月29日,Qwen2.5-Max 发布,在 Arena-Hard、LiveBench、LiveCodeBench 和 GPQA-Diamond 等基准测试中,超越了 DeepSeek V3 和 GPT-4o。

业内开始出现一种声音,开源 LLM 不再仅仅是闭源模型的追随者,而是开始主导 AI 发展的方向,而 DeepSeek 和 Qwen 是目前领跑的开源项目。本文将介绍如何基于开源工具部署大模型、构建测试应用、调用大模型能力的完整链路。

一、为什么选择 PC 或手机在本地部署?

  • 模型计算发生在电脑或手机上,免除算力费用
  • API 调用发生在本地网络内,免除 Token 调用费用
  • 敏感数据,无需离开本地环境

适合个人开发者体验。

二、为什么要选择 DeepSeek R1 蒸馏版?

  • 由于本地设备的限制,只能运行小杯型的版本,Qwen 提供了全尺寸的版本。
  • DeepSeek R1 开源协议明确可“模型蒸馏”(Distill),且提供了基于 Qwen 的蒸馏版本,可以直接下载使用。

三、本地部署 DeepSeek 蒸馏版和 Qwen2.5

安装 Ollama,选择杯型,运行 DeepSeek

# 安装Ollama
curl -fsSL https://ollama.com/install.sh | sh

# 运行DeepSeek蒸馏模型
ollama run deepseek-r1:7b

Ollama 已支持 DeepSeek R1 和 Qwen2.5,其中 Qwen2.5-Max 因今天刚发布,待 Ollama 支持。

四、Spring AI Alibaba 创建应用,调用服务

使用 Spring AI Alibaba 开发应用与使用普通 Spring Boot 没有什么区别,只需要增加 spring-ai-alibaba-starter 依赖,将 ChatClientBean 注入就可以实现与模型聊天了。

在项目中加入 spring-ai-alibaba-starter 依赖,由于模型是通过 ollama 运行的,这里我们也加入 spring-ai-ollama-spring-boot-starter 依赖。

<dependency>
  <groupId>com.alibaba.cloud.ai</groupId>
  <artifactId>spring-ai-alibaba-starter</artifactId>
  <version>1.0.0-M5.1</version>
</dependency>
<dependency>
  <groupId>org.springframework.ai</groupId>
  <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
  <version>1.0.0-M5</version>
</dependency>

注意:由于 spring-ai 相关依赖包还没有发布到中央仓库,如出现 spring-ai-core 等相关依赖解析问题,请在您项目的 pom.xml 依赖中加入如下仓库配置。

<repositories>
  <repository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/milestone</url>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
</repositories>

注入 ChatClient:

@RestController
public class ChatController {

  private final ChatClient chatClient;

  public ChatController(ChatClient.Builder builder) {
    this.chatClient = builder.build();
  }

  @GetMapping("/chat")
  public String chat(String input) {
    return this.chatClient.prompt()
        .user(input)
        .call()
        .content();
  }
}

配置模型地址,在 application.properties 中配置模型的 url:

spring.ai.ollama.base-url=http://localhost:11434
spring.ai.ollama.chat.model=deepseek-r1:7b

示例完整源码可参考:https://github.com/springaialibaba/spring-ai-alibaba-examples/tree/main/spring-ai-alibaba-chat-example/ollama-chat/ollama-chat-client

五、进阶玩法:生产环境

通过将本地验证的模型纳入企业级技术体系,才能真正释放大模型的商业价值,但同时需要满足严苛的生产环境要求。接下来,我们从流量的管理和安全防护的视角,来看看如何提升 AI 应用的稳定性。

Higress 是一款云原生 API 网关,内核基于 Istio 和 Envoy,并基于生产业务需求做了增强,可用于部署 Web 类应用和大模型应用,在 AI 领域,已经支撑了通义千问 APP、百炼大模型 API、机器学习 PAI 平台、FastGPT、中华财险等 AI 业务。[6]

Higress 支持一行命令安装:

curl -sS  https://higress.cn/ai-gateway/install.sh | bash

执行完命令后可以通过命令行初始化配置,可以看到,Higress 的 AI 网关能力支持对接国内外所有主流 LLM 模型供应商:

也可以选择跳过这个步骤,到 Higress 的控制台进行配置对应供应商的 API Key:

配置后,就可以直接使用了。下方是调用 OpenAI 的客户端,然后通过 Higress 路由到其他模型,例如 DeepSeek 和 Qwen。

import json
from openai import OpenAI

client = OpenAI(
    api_key=xxxxx, # 👉 可以通过Higress生成消费者Key实现API key的二次分租
    base_url="http://127.0.0.1:8080/v1"
)

completion = client.chat.completions.create(
    # model="qwen-max",
    # model="gemini-1.5-pro",
    model="deepseek-chat", # 👉 可以填写任意模型名称,Higress根据模型名称路由到对应供应商
    messages=[
        {"role": "user", "content": "你好"}
    ],
    stream=True
)

for chunk in completion:
    print(chunk.choices[0].delta)

如果您正在使用 Spring AI Alibaba 开发应用,只需要配置 OpenAI 相关依赖与参数,ChatClient 就会通过Higress 代理与后端模型交互:

<dependency>
  <groupId>org.springframework.ai</groupId>
  <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
  <version>1.0.0-M5</version>
</dependency>
spring.ai.openai.base-url=http://127.0.0.1:8080/v1
spring.ai.openai.chat.model=deepseek-chat
spring.ai.openai.chat.api-key=xxxxx, # 👉 可以通过Higress生成消费者Key实现API key的二次分租

然后,在监控面板看到每个模型,以及每个消费者的 token 消耗情况以及调用延时:

此外,Higress 还提供了很多实用的功能,例如:

  • API Key 治理: 支持配置 API Key 池实现多 Key 均衡,API Key 被限流等不可用情况会自动屏蔽,并在可用时自动恢复;
  • 消费者管理:可以通过创建消费者,实现 API Key 的二次分发,无需将真正的供应商 API Key 暴露给调用方,并且可以精细化管理不同消费者的调用权限和调用额度;
  • 兜底模型: 支持配置兜底模型,例如当请求 DeepSeek 模型失败时,自动降级到 OpenAI 模型;
  • 模型灰度: 支持模型平滑按比例灰度,可以参考《DeepSeek-R1来了,如何从OpenAI平滑迁移到DeepSeek》

Higress 的插件市场里还有很多开箱即用的插件,例如提示词模版,AI 缓存,数据脱敏,内容安全等等。

插件代码也都是开源的,并且支持自己开发插件,支持在网关上热装载,对流量完全无损。这对于 RealTime API 等实时会话的场景十分友好,不会断开长连接。

以上是本地部署 DeepSeek 和 Qwen 的实践,如果您希望通过云端方式进行部署,可以参考魔搭+函数计算 FC

技术支持:

Spring AI Alibaba 钉群群号:105120009405;

Higress 钉群群号:107690002780

参考文档:

[1] https://github.com/deepseek-ai/DeepSeek-R1

[2] https://qwenlm.github.io/blog/qwen2.5-vl/

[3] https://github.com/deepseek-ai/Janus?tab=readme-ov-file

[4] https://qwenlm.github.io/blog/qwen2.5-1m

[5] https://qwenlm.github.io/zh/blog/qwen2.5-max/

[6] https://github.com/alibaba/higress


阿里云云原生
1k 声望306 粉丝