自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(211)
  • 收藏
  • 关注

原创 vLLM 的秘密武器:PagedAttention

随着大模型的参数量不断增加,其智能水平也随之提升。然而,与此同时,这种增长也给推理能力带来了巨大的挑战。在追求更智能的大模型的同时,我们应如何解决这一推理挑战,使得大模型更加易用?

2024-10-28 14:27:41 1284

原创 Triton Inference Server 架构原理

我们在部署过程中需要进行的操作就是根据需要进行 config.pbtxt 配置和 model.py 脚本代码的修改,当然 triton_model_repo 仓库中并不是固定的上面这些 backend,而是可以根据需求自行增加或者删除。

2024-10-17 16:01:37 1942

原创 vLLM 部署大模型问题记录

vLLM 提供了一个官方的 Docker 镜像用于部署,这个镜像可以用来运行与 OpenAI 兼容的服务,并且在 Docker Hub 上可用,名为 vllm/vllm-openai。引擎启动参数:https://docs.vllm.ai/en/stable/models/engine_args.html。引擎启动参数:https://docs.vllm.ai/en/stable/models/engine_args.html。Llama3.2 最新支持视觉大模型,不支持音频输入。

2024-10-17 15:53:53 7514 5

原创 vLLM 推理引擎性能分析基准测试

本文为 vLLM 推理引擎根据官方提供的数据集进行的性能基准测试,主要测试分析 --enable-chunked-prefill 的启用/禁用以及 --max-num-batched-tokens 参数的调整对性能的影响情况...

2024-10-16 15:32:20 7381 18

原创 vLLM 大模型推理引擎调研文档

vLLM 是一个快速且易于使用的 LLM 推理和服务库,文章内容包含模型引擎部署、参数量化、性能调优分析等全套内容。

2024-10-16 14:41:22 2244

原创 TensorRT-LLM & Triton Server 部署过程记录

虽然理论上 Docker 方式部署不是必须,但在实践中发现如果不使用官方镜像,在配置 TRT 和 NTIS 环境的时候会出现各种由于版本 mismatch 的编译错误,比如 mpi4py api 的编译过程中,由于我们服务器的 os 版本(ubuntu24.04)与 os 对应的 openmpi 版本(4.1.6)超前导致编译失败等类似情况(在这个过程中就花费了大量的时间成本)。还是以上面的场景举例,假设当前过去了 3s,request_a 已经完成, request_b 仍需 97s 完成。

2024-10-15 19:50:58 1909

原创 大模型推理框架选型调研

从 TensorRT-LLM+Triton 这套方法的部署过程来看,还是较为复杂的,需要先对模型进行编译,还要特别注意环境、参数的设置,稍不注意就无法正常部署。除此之外,Nvidia 的文档也不够清晰。但是,在模型推理场景下,推理效果也并不是唯一选择因素,其他例如框架易用性、不同底层硬件的支持,也需要根据实际情况进行考量,选择最合适推理引擎。这些引擎在推理性能、优化支持、易用性等方面各有优势和特点,选择合适的推理引擎需要综合考虑这些因素,以确保模型在实际部署中能够达到最佳的性能和效率。

2024-10-15 19:19:26 1767

原创 Kubernetes 之深入理解 DaemonSet

为了弄清楚 DaemonSet 的工作原理,我们还是按照老规矩,先从它的 API 对象的定义说起。这个 DaemonSet,管理的是一个 fluentd-elasticsearch 镜像的 Pod。这个镜像的功能非常实用:通过 fluentd 将 Docker 容器里的日志转发到 ElasticSearch 中。可以看到,DaemonSet 跟 Deployment 其实非常相似,只不过是没有 replicas 字段;

2023-03-28 23:13:50 821

原创 Kubernetes 之深入理解 StatefulSet

容器技术诞生后,大家很快发现,它用来封装“无状态应用”(Stateless Application),尤其是 Web 服务,非常好用。但是,一旦你想要用容器运行“有状态应用”,其困难程度就会直线上升。而且,这个问题解决起来,单纯依靠容器技术本身已经无能为力,这也就导致了很长一段时间内,“有状态应用”几乎成了容器技术圈子的“忌讳”,大家一听到这个词,就纷纷摇头。

2023-03-18 10:19:48 1232

原创 Kubernetes 的控制器模型

“容器”镜像虽然好用,但是容器这样一个“沙盒”的概念,对于描述应用来说,还是太过简单了。这就好比,集装箱固然好用,但是如果它四面都光秃秃的,吊车还怎么把这个集装箱吊起来并摆放好呢?

2023-03-15 22:25:10 971 2

原创 Kubernetes 之 Pod 到底是什么?

Pod 扮演的是传统部署环境里“虚拟机”的角色。这样的设计,是为了使用户从传统环境(虚拟机环境)向 Kubernetes(容器环境)的迁移,更加平滑。

2023-03-12 23:06:40 881

原创 Kubernetes 如何运行容器?

作为一个应用开发者,你首先要做的,是制作容器的镜像。而有了容器镜像之后,你需要按照 Kubernetes 项目的规范和要求,将你的镜像组织为它能够“认识”的方式,然后提交上去。

2023-03-11 21:43:53 1580 3

原创 Kubernetes 一键部署利器:kubeadm

Kubernetes 的部署一直以来都是挡在初学者前面的一只“拦路虎”。尤其是在 Kubernetes 项目发布初期,它的部署完全要依靠一堆由社区维护的脚本。

2023-03-09 21:45:51 1664 1

原创 一文说清 Kubernetes 的本质

如果 Kubernetes 项目只是停留在拉取用户镜像、运行容器,以及提供常见的运维功能的话,那么别说跟“原生”的 Docker Swarm 项目竞争了,哪怕跟经典的 PaaS 项目相比也难有什么优势可言

2023-03-02 21:37:23 1405

原创 Docker 部署实战

通过文件的内容,可以看到 Dockerfile 的设计思想,是使用一些标准的原语(即大写高亮的词语),描述我们所要构建的 Docker 镜像。并且这些原语都是按顺序处理的。

2023-02-28 21:22:31 1110 2

原创 Docker 竟如此简单!

容器其实是一种沙盒技术。顾名思义,沙盒就是能够像一个集装箱一样,把你的应用“装”起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去,这不就是 PaaS 最理想的状态嘛。

2023-02-21 22:37:44 3976

原创 代码质量、重构、可测试性、解耦杂谈

如何发现代码质量问题?从大处着眼的话,看这段代码是否可读、可扩展、可维护、灵活、简洁、可复用、可测试等等,落实到具体细节,可以从以下几个方面来审视代码。

2022-11-14 12:21:01 1750

原创 如何利用基于充血模型的DDD开发一个虚拟钱包系统?

上篇文章总结了一些理论知识的铺垫性讲解,讲到了两种开发模式,基于贫血模型的传统开发模式,以及基于充血模型的 DDD 开发模式。今天,我们正式进入实战环节,看如何分别用这两种开发模式,设计实现一个钱包系统。

2022-11-13 16:57:13 1762

原创 原来我们一直写的是违反面向对象编程风格的代码

众所周知,很多业务系统都是基于 MVC 三层架构来开发的,虽然这种开发模式已经成为标准的 Web 项目的开发模式,但它却违反了面向对象编程风格,是一种彻彻底底的面向过程的编程风格,因此被有些人称为反模式(anti-pattern)。特别是领域驱动设计(Domain Driven Design,简称 DDD)盛行之后,这种基于贫血模型的传统的开发模式就更加被人诟病,而基于充血模型的 DDD 开发模式越来越被人提倡。

2022-11-13 14:55:04 550 1

原创 服务与发现

假设你正在编写一些调用具有 REST API 的服务的代码,为了发出请求,你的代码需要知道服务实例的网络位置(IP 地址和端口),在物理硬件上运行的传统应用程序中,服务实例的网络位置通常是静态的。例如,你的代码可以从偶尔更新的配置文件中读取网络位置,但在现代的基于云的微服务应用程序中,通常不那么简单...

2022-10-22 00:13:55 891

原创 微服务架构中的进程间通信

客户端与服务的交互方式可以分为两个维度,第一个维度关注的是一对一和一对多,第二个维度是同步和异步。

2022-10-17 21:40:31 1640 2

原创 微服务的拆分策略

架构风格根据结构组织模式定义了一系列系统,更具体地说,架构风格确定可以在该风格的实例中使用的组件和连接器的词汇表,以及关于如何组合它们的一组约束。

2022-06-27 20:43:10 787

原创 逃离单体地狱

曾经小巧的、简单的、由一个小团队开发维护应用程序,经过10年的成长,已经演变成一个由大团队开发的巨无霸单体应用程序。同样,小型开发团队现在已成为多个所谓 Scrum 敏捷团队,每个团队都在特定的功能领域工作。作为架构扩展的结果,项目已经陷入了单体地狱,开发变得缓慢和痛苦,敏捷开发和部署已经不可能。来看看这是为什么。...

2022-05-30 22:57:40 591 1

原创 设计原则与思想:面向对象

如何评价代码质量的高低?当谈论面向对象的时候,我们到底在谈论什么?哪些代码设计看似是面向对象,实际是面向过程的?接口vs抽象类的区别?为何说要多用组合少用继承?如何决定该用组合还是继承?如何做面向对象分析和面向对象设计?

2022-03-14 21:40:57 1098

原创 Spring Security OAuth:源码解析

在使用 Spring Security 框架时,建造者我们是不会动的,我们能做的只是将自己的配置添加到整个架构下,所以能扩展的是配置器,Spring Security OAuth 也是如此。

2021-09-01 14:45:19 1182 4

原创 DataLink 数据同步平台

在项目开发中,经常需要将数据库数据同步到 ES、Redis 等其他平台,通过自己写代码进行同步过程中面临诸多问题,比如业务代码和同步代码高耦合,数据一致性等;一个支持多输入输出源的数据同步平台就显得很有意义。

2021-08-17 23:24:59 8928 5

原创 Spring Security OAuth:客户端模式超简单实现

OAuth 是一个开放标准,Spring Security OAuth 给我们提供了一个 OAuth 的实现,本篇演示了如何使用 Spring Security OAuth 做客户端模式的授权和认证,代码非常简单!

2021-08-16 22:10:43 5707 4

原创 控制层接口规范

控制层采用 REST 规范,可以将每个业务中心理解为一个超大的 JSON 文档,通过 URI 在文档中来定位资源,通过 Http 动词完成增删查改操作

2021-07-27 23:17:29 842

原创 优雅的函数设计

是否每次团队中对自己的代码 CodeReview 总有顾虑?害怕自己设计的代码不够好被同事嘲笑?想不想在 CodeReview 时,让你的同事为你的代码所惊艳?来!这里有一份 Java 优雅的函数设计规范你值得拥有!

2021-07-22 17:35:16 331 2

原创 Sentinel 限流框架

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。

2021-07-13 17:38:20 853 1

原创 Redis 单节点 ➤ Redis Sentinel 高可用 ➤ Redis Cluster 集群

这是一套从 Redis 单节点,到 Redis Sentinel 哨兵做自动故障转移实现高可用,再到 Redis Cluster 集群由简单到深入的详细部署方案,值得收藏和学习,欢迎一起交流~

2021-07-08 19:09:46 590 2

原创 【Redis 开发与运维】开发运维的“陷阱”

在 Redis 的开发和运维过程中,由于对于 Redis 的某些特性没有真正合理地使用,会遇到一些棘手的问题,本章将对一些典型的“陷阱”进行逐一分析并提出解决方案。

2021-07-03 21:12:22 284 3

原创 【Redis 开发与运维】Redis Cluster 集群(三)

Redis 集群不需要依赖 Sentinel 哨兵,自身实现了高可用,即自动故障转移,本篇来了解一下集群内部的故障转移,还有集群运维的一些点。

2021-07-02 15:40:21 439 2

原创 【Redis 开发与运维】Redis Cluster 集群(二)

Redis Cluster 集群第二篇,聊聊集群伸缩的原理以及扩容和收缩的基本操作,再聊聊请求的路由方法以及集群客户端原理和实战 —— JedisCluster

2021-06-29 21:12:15 402 1

原创 【Redis 开发与运维】Redis Cluster 集群(一)

Redis Cluster 是 Redis 的分布式解决方案,有效地解决了 Redis 分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用 Cluster 架构方案达到负载均衡的目的。

2021-06-22 20:12:00 613

原创 【Redis 开发与运维】Redis 的噩梦:阻塞

Redis 是典型的单线程架构,所有的读写操作都是在一条主线程中完成的。当 Redis 用于高并发场景时,这条线程就变成了它的生命线。如果出现阻塞,哪怕是很短时间,对于我们的应用来说都是噩梦。

2021-06-20 13:33:33 531

原创 【Redis 开发与运维】Redis Sentinel 哨兵(二)

本篇将介绍应用方如何正确地连接 Redis Sentinel,并且聊聊 Redis Sentinel 的实现原理,还有一些开发与运维中的问题探讨

2021-06-19 14:33:02 881

原创 【Redis 开发与运维】Redis Sentinel 哨兵(一)

Redis 的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,对于与很多应用场景这种故障处理的方式是无法接受的。正好本章节的 Redis Sentinel 就是用来做自动故障转移的。

2021-06-18 20:03:16 318

原创 【Redis 开发与运维】复制

在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均很等需求。Redis 也是如此,它为我们提供了复制功能,实现了相同数据的多个 Redis 副本。

2021-06-12 22:33:07 275

原创 【Redis 开发与运维】客户端

客户端通信协议、Java 客户端 Jedis 的基本使用、客户端管理、客户端案例分析

2021-05-31 23:30:07 277 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除