- 博客(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-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
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人