vLLM+K8s实战:如何用GPU硬切分同时部署embedding和reranker模型?

vLLM高效部署指南:从embedding到qwen3模型的实战技巧与避坑手册 本文详细介绍了vLLM的高效部署指南,涵盖从embedding到qwen3模型的实战技巧与避坑方法。通过Docker部署、环境配置优化、量化版本选择等实用建议,帮助开发者快速掌握vLLM的高性能部署,特别适用于Qwen3系列模型的深度优化与生产环境应用。 阅读详情

企业级AI模型部署革命:基于昇腾NPU硬切分与Kubernetes的单卡多模型共存实战

在构建企业级AI应用平台时,我们常常面临一个核心矛盾:一方面,大型语言模型(LLM)需要消耗海量的计算资源,动辄占用整张甚至多张高性能计算卡;另一方面,embedding、reranker、语音识别等“小”模型虽然单个资源需求不大,但种类繁多,如果每个模型都独占一张卡,硬件成本将急剧攀升,资源利用率却低得可怜。传统的“一模型一卡”部署模式,在追求极致性价比和灵活性的今天,已经显得捉襟见肘。

想象一下这样的场景:你手头有一台搭载了昇腾Atlas 800I A2推理服务器的设备,需要同时部署一个用于文档检索的embedding模型(如bge-m3)、一个用于结果精排的reranker模型(如bge-reranker-v2-m3),或许还有一个语音识别模型(如SenseVoiceSmall)。按照老办法,你可能需要三张卡。但现实是,这些“小”模型在推理时,显存和算力占用远未达到单卡的饱和状态。大量的计算资源就在这种“占着茅坑不拉屎”的状态下被白白浪费了。

有没有一种技术,能像切蛋糕一样,将一张物理NPU卡的算力和显存精准地划分成多个独立的虚拟部分,分别分配给不同的模型使用,并且保证它们之间互不干扰?答案是肯定的。昇腾NPU提供的虚拟化硬切分(vNPU) 能力,结合Kubernetes强大的资源调度与隔离特性,正是解决这一难题的“黄金组合”。本文将深入探讨如何利用这套技术栈,在单张Atlas 800I A2上,实现embedding与reranker模型的高效、稳定、生产级共存部署。这不仅是一次技术实践,更是对AI基础设施资源利用范式的一次革新。

1. 核心理念:从资源独占走向智能共享

在深入实操之前,我们必须理解支撑此次部署变革的两大技术支柱:昇腾vNPU硬切分和Kubernetes容器化编排。它们的结合,并非简单的功能叠加,而是产生了“1+1>2”的协同效应。

昇腾NPU虚拟化硬切分 并非简单的软件时分复用。它是一种在硬件驱动层实现的、基于物理隔离的资源划分能力。你可以将其理解为在一套物理公寓(NPU卡)内,建造出多个拥有独立产权、独立水电表、隔音墙完备的套房(vNPU)。每个vNPU拥有独占的AI Core、显存(Memory)及其他计算单元(如AI CPU、VPC等)。这意味着:

  • 真实的资源保障:每个vNPU分配到的AI Core和显存是物理上预留的,不会被其他vNPU上的任务抢占,确保了模型推理的延迟稳定性和性能可预测性。
  • 强隔离性:一个vNPU上的进程崩溃、内存泄漏或异常高负载,不会影响到同一张物理卡上其他vNPU的运行,极大地提升了系统的整体可靠性。
  • 灵活的规格定义:昇腾提供了多种预定义的切分模板(如vir10_3c_32g、vir05_1c_16g),用户可以根据模型的实际资源需求,像选择云主机规格一样,为不同模型分配合适的vNPU。

而 Kubernetes 作为容器编排的事实标准,为这些vNPU的“套房”提供了完美的“物业管理”和“租客调度”服务:

  • 资源抽象与调度:Kubernetes可以将vNPU作为一种可扩展的硬件资源(类似于nvidia.com/gpu)进行管理和调度。它负责将包含特定模型的Pod(容器组)精准地调度到拥有目标vNPU的节点上。
  • 生命周期与健康管理:通过Deployment、StatefulSet等资源对象,Kubernetes确保了模型服务的高可用性。结合Liveness Probe、Readiness Probe和Startup Probe,它能自动监控模型服务的健康状态,并在异常时执行重启或迁移,这是单纯使用Docker的--restart参数无法比拟的。
  • 统一的配置与网络:通过ConfigMap、Secret管理模型配置和密钥,通过Service为内部和外部访问提供稳定的网络端点,使得整个部署架构清晰、易于维护。

当硬切分提供了底层的、稳固的资源“隔间”,Kubernetes则在其之上构建了自动化、智能化的运维“大厦”。两者结合,最终实现的目标是:让多个AI模型像微服务一样,安全、高效、弹性地共享同一块高性能计算硬件。

2. 环境准备:从硬件检查到K8s配置

实战开始。假设我们拥有一台Atlas 800I A2(32G或64G版本)服务器,并已安装好标准的Kubernetes集群(如K3s、KubeSphere等)。我们的目标是将这张卡的一部分资源切分出来,同时部署bge-m3和bge-reranker-v2-m3模型。

2.1 NPU状态检查与切分规划

首先,我们需要登录到服务器,检查NPU的当前状态,并规划切分方案。

  1. 查看所有NPU信息:使用npu-smi工具,这是管理昇腾设备的瑞士军刀。

    npu-smi info
    

    这条命令会列出所有物理NPU卡的状态,包括卡ID、芯片ID、健康状况、功耗、温度以及当前是否有进程运行。我们需要找到一张空闲的、状态健康的卡作为切分对象。输出中类似Processes: None的标识意味着该卡未被占用。

  2. 查询可用的切分模板:不同的NPU型号和显存规格支持的切分模板不同。我们需要根据模型需求选择合适的模板。

    npu-smi info -t template-info
    

    以Atlas 800I A2 (64G)为例,常见的模板可能包括:

    • vir10_3c_32g: 分配10个AI Core和32GB显存。
    • vir05_1c_16g: 分配5个AI Core和16GB显存。

    根据社区实践和模型大小,bge-m3和bge-reranker-v2-m3这类模型在推理时显存占用通常在几个GB到十几GB之间。为了最大化利用资源并留有余量,我们可以选择vir10_3c_32g模板进行1切2,即一张物理卡切分出两个vNPU,每个vNPU拥有10个AI Core和32GB显存(注意:这是逻辑分配,实际物理显存为64G,1切2后每个vNPU分得一半的物理资源)。

  3. 记录目标卡信息:假设我们选定卡ID (device_id) 为6,芯片ID (chip_id) 为0的NPU进行切分。

2.2 执行NPU硬切分

确定了目标和方案后,开始执行切分命令。

  1. 创建vNPU:使用以下命令,在指定的物理卡上按照模板创建虚拟NPU。

    npu-smi set -t create-vnpu -i 6 -c 0 -f vir10_3c_32g
    
    • -i 6: 指定设备ID为6。
    • -c 0: 指定芯片ID为0。
    • -f vir10_3c_32g: 指定使用vir10_3c_32g模板进行切分。

    执行成功后,系统会提示vNPU创建完成。

  2. 查询创建的vNPU信息:创建后,我们需要获取生成的vNPU的ID,这是后续挂载到容器的关键。

    npu-smi info -t info-vnpu -i 6 -c 0
    

    输出会显示该物理卡上所有的vNPU列表。例如,你可能会看到两个vNPU,它们的ID可能是100和101(或212、213等)。请务必记下这两个ID,假设我们得到vnpu_id为100和101。

注意:vNPU一旦创建,其对应的物理NPU部分资源就被锁定,无法再以整卡形式挂载给其他容器使用。在销毁vNPU之前,这部分资源是专属于这两个虚拟实例的。

2.3 Kubernetes集群配置

为了让Kubernetes能够识别和调度vNPU,我们需要在集群节点上进行一些配置。这里主要涉及将vNPU设备挂载到容器运行时。

方案选择:原生Docker挂载 vs Ascend Docker Runtime

对于vLLM(通过mis-tei或mindie镜像)部署embedding和reranker模型,通常推荐使用原生Docker挂载方式,更为直接和通用。

  1. 配置Kubernetes节点:我们需要确保Kubernetes工作节点(即运行NPU的服务器)的Docker或Containerd配置能够访问到vNPU设备。这通常意味着需要将vNPU的设备文件(如/dev/vdavinci100)暴露给容器运行时。

  2. 创建RuntimeClass(可选但推荐):在Kubernetes中,可以创建一个RuntimeClass资源,专门用于运行需要vNPU的Pod。这比在每个Pod中单独配置要清晰。

    # vnpu-runtimeclass.yaml
    apiVersion: node.k8s.io/v1
    kind: RuntimeClass
    metadata:
      name: ascend-vnpu
    handler: runc  # 根据实际容器运行时填写,可能是 `runc` 或 `crun`
    

    应用此配置:kubectl apply -f vnpu-runtimeclass.yaml。

  3. 准备模型存储:无论是bge-m3还是bge-reranker-v2-m3,都需要提前将模型文件下载到服务器的一个持久化目录中,例如/home/ai-models。在K8s中,我们将通过hostPath卷的方式将这个目录挂载到Pod内的容器中。

至此,底层硬件切分和集群基础配置已完成。我们得到两个虚拟的、隔离的计算单元(vNPU 100和101),并准备好了K8s的运行环境。接下来,就是为这两个“房客”部署各自的“服务”(模型)。

3. 模型部署实战:为vNPU定制K8s资源清单

我们将分别为bge-m3和bge-reranker-v2-m3创建Kubernetes的Deployment和Service。这里的关键在于Pod的配置,如何将特定的vNPU安全地、隔离地分配给对应的模型容器。

3.1 部署bge-m3 Embedding模型

首先创建embedding模型的部署文件。我们假设使用一个支持昇腾NPU和vLLM的镜像,例如swr.cn-south-1.myhuaweicloud.com/ascendhub/mis-tei:latest(具体版本需根据CANN和模型要求选择)。

# bge-m3-embedding-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: bge-m3-embedding
  namespace: ai-models
spec:
  replicas: 1  # 生产环境可根据需要调整,但vNPU是独占资源,通常一个vNPU一个副本
  selector:
    matchLabels:
      app: bge-m3-embedding
  template:
    metadata:
      labels:
        app: bge-m3-embedding
    spec:
      runtimeClassName: ascend-vnpu  # 使用我们创建的RuntimeClass
      nodeSelector:
        kubernetes.io/hostname: your-npu-node-name  # 指定运行在拥有NPU的节点上
      containers:
      - name: embedding-server
        image: swr.cn-south-1.myhuaweicloud.com/ascendhub/mis-tei:7.1.RC1
        command: ["python3"]
        args:
        - "-m"
        - "vllm.entrypoints.openai.api_server"
        - "--model"
        - "/models/bge-m3"  # 容器内模型路径
        - "--served-model-name"
        - "bge-m3"
        - "--task"
        - "embedding"  # 关键参数,指定为embedding任务
        - "--host"
        - "0.0.0.0"
        - "--port"
        - "8001"
        - "--trust-remote-code"
        - "--enable-prefix-caching"  # 启用前缀缓存,优化性能
        # 针对NPU的可选性能参数
        - "--gpu-memory-utilization"
        - "0.8"
        securityContext:
          privileged: true  # 通常需要特权模式来访问NPU设备
        volumeMounts:
        - name: model-storage
          mountPath: /models
        - name: npu-devices
          mountPath: /dev/vdavinci100  # 挂载vNPU 100的设备文件
        resources:
          limits:
            # 这里可以象征性地设置,实际资源受vNPU规格限制
            memory: "32Gi"
            cpu: "4"
          requests:
            memory: "16Gi"
            cpu: "2"
        startupProbe:
          httpGet:
            path: /health
            port: 8001
          initialDelaySeconds: 60  # 模型加载可能需要时间
          periodSeconds: 10
          failureThreshold: 10
        livenessProbe:
          httpGet:
            path: /health
            port: 8001
          initialDelaySeconds: 90
          periodSeconds: 20
        readinessProbe:
          httpGet:
            path: /health
            port: 8001
          initialDelaySeconds: 30
          periodSeconds: 5
      volumes:
      - name: model-storage
        hostPath:
          path: /home/ai-models
          type: Directory
      - name: npu-devices
        hostPath:
          path: /dev/vdavinci100  # 主机上的vNPU 100设备
          type: CharDevice
---
# bge-m3-embedding-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: bge-m3-embedding-service
  namespace: ai-models
spec:
  selector:
    app: bge-m3-embedding
  ports:
  - port: 8001
    targetPort: 8001
    nodePort: 30001  # 如果需要从集群外部访问,使用NodePort
  type: NodePort

关键点解析:

  • volumeMounts 和 volumes:我们通过hostPath卷,不仅挂载了模型存储目录,更重要的是挂载了特定的vNPU设备文件 (/dev/vdavinci100)。这确保了该Pod中的容器独占并使用vNPU 100。
  • securityContext.privileged: true:访问底层NPU设备通常需要特权模式。在生产环境中,应评估更细粒度的权限配置(如使用Device Plugins),但初期为简化部署可先使用特权模式。
  • startupProbe:对于AI模型,加载权重到显存的过程可能较长,startupProbe的initialDelaySeconds和failureThreshold需要设置得足够大,避免在模型加载完成前就被判定为启动失败。
  • task embedding:这是vLLM启动embedding模型服务的关键参数,必须正确指定。

3.2 部署bge-reranker-v2-m3 Reranker模型

reranker模型的部署YAML与embedding模型高度相似,主要区别在于:

  1. 使用另一个vNPU设备(例如/dev/vdavinci101)。
  2. 启动命令中不需要 --task 参数(或者根据vLLM版本,可能需要指定为其他值,某些版本reranker部署方式与LLM相同)。
  3. 模型名称和路径更改。
# bge-reranker-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: bge-reranker-v2-m3
  namespace: ai-models
spec:
  replicas: 1
  selector:
    matchLabels:
      app: bge-reranker-v2-m3
  template:
    metadata:
      labels:
        app: bge-reranker-v2-m3
    spec:
      runtimeClassName: ascend-vnpu
      nodeSelector:
        kubernetes.io/hostname: your-npu-node-name
      containers:
      - name: reranker-server
        image: swr.cn-south-1.myhuaweicloud.com/ascendhub/mis-tei:7.1.RC1
        command: ["python3"]
        args:
        - "-m"
        - "vllm.entrypoints.openai.api_server"
        - "--model"
        - "/models/bge-reranker-v2-m3"
        - "--served-model-name"
        - "bge-reranker-v2-m3"
        # 注意:reranker模型部署通常不指定 --task,或需查阅具体模型文档
        - "--host"
        - "0.0.0.0"
        - "--port"
        - "8002"
        - "--trust-remote-code"
        - "--enable-prefix-caching"
        - "--gpu-memory-utilization"
        - "0.8"
        securityContext:
          privileged: true
        volumeMounts:
        - name: model-storage
          mountPath: /models
        - name: npu-devices
          mountPath: /dev/vdavinci101  # 挂载vNPU 101
        resources:
          limits:
            memory: "32Gi"
            cpu: "4"
        startupProbe:
          httpGet:
            path: /health
            port: 8002
          initialDelaySeconds: 60
          periodSeconds: 10
          failureThreshold: 10
        livenessProbe:
          httpGet:
            path: /health
            port: 8002
          initialDelaySeconds: 90
          periodSeconds: 20
        readinessProbe:
          httpGet:
            path: /health
            port: 8002
          initialDelaySeconds: 30
          periodSeconds: 5
      volumes:
      - name: model-storage
        hostPath:
          path: /home/ai-models
          type: Directory
      - name: npu-devices
        hostPath:
          path: /dev/vdavinci101  # 主机上的vNPU 101设备
          type: CharDevice
---
# bge-reranker-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: bge-reranker-service
  namespace: ai-models
spec:
  selector:
    app: bge-reranker-v2-m3
  ports:
  - port: 8002
    targetPort: 8002
    nodePort: 30002
  type: NodePort

将以上YAML文件中的your-npu-node-name替换为实际的Kubernetes节点名称,然后依次应用:

kubectl create namespace ai-models
kubectl apply -f bge-m3-embedding-deployment.yaml
kubectl apply -f bge-m3-embedding-service.yaml
kubectl apply -f bge-reranker-deployment.yaml
kubectl apply -f bge-reranker-service.yaml

使用kubectl get pods -n ai-models -w观察Pod状态,直到两个Pod都进入Running状态,并且READY为1/1。

4. 生产级调优与运维监控

部署成功只是第一步。要让这套系统在生产环境中稳定运行,还需要关注性能调优、监控和故障处理。

4.1 性能调优参数实践

vLLM和底层NPU驱动提供了丰富的参数来调节推理性能。以下是一些针对昇腾NPU和vLLM的实用调优经验:

参数作用建议值(针对bge-m3/reranker)说明
--gpu-memory-utilization控制vLLM可使用的显存比例0.8设置为小于1,为系统和其他进程预留空间,避免OOM。
--max-num-seqs最大并发处理的序列数128影响吞吐量。值越大,吞吐潜力越高,但可能增加延迟和显存占用。需压测确定。
--max-num-batched-tokens批处理的最大token数256 或 512同样影响吞吐和延迟的平衡。小模型可以设小一些。
--enforce-eager禁用图优化,以显存换速度视情况启用如果出现OOM,可以尝试启用此选项,它会减少图编译占用的显存,但可能降低推理速度。
--pipeline-parallel-size流水线并行大小1对于单卡vNPU部署的小模型,保持为1。

在Deployment的args中,可以这样添加:

args:
- "-m"
- "vllm.entrypoints.openai.api_server"
- "--model"
- "/models/bge-m3"
# ... 其他参数
- "--max-num-seqs"
- "128"
- "--max-num-batched-tokens"
- "256"
- "--gpu-memory-utilization"
- "0.85"

4.2 监控与日志收集

清晰的监控是运维的眼睛。我们需要监控两个层面:

  1. vNPU硬件监控:虽然Pod内部看到的只是虚拟卡,但物理卡的健康状态至关重要。可以在宿主机上部署npu-smi的定时采集任务,将NPU的温度、功耗、利用率、内存使用率、ECC错误等信息推送到Prometheus。

    • 利用率监控:观察每个vNPU上模型的AI Core利用率,判断负载是否均衡,是否存在瓶颈。
    • 显存监控:确保模型运行时的显存占用稳定在分配额度内,没有泄漏。
  2. 模型服务应用监控:

    • Kubernetes原生监控:利用kubectl top pod查看Pod的CPU和内存使用情况。通过Service的NodePort,我们可以从集群外部访问模型的/metrics端点(如果vLLM开启的话),获取请求延迟(P50, P99)、吞吐量(Tokens/s)、错误率等关键指标,并接入Grafana面板。
    • 日志集中收集:使用Fluentd、Fluent Bit或Filebeat等工具,将Pod内vLLM输出的日志(特别是错误日志和慢查询日志)收集到Elasticsearch或Loki中,便于问题排查。

4.3 健康检查与故障自愈

我们在Deployment中已经配置了三种Probe,它们协同工作:

  • Startup Probe:模型加载慢,用它来“耐心等待”启动完成。
  • Readiness Probe:告诉Kubernetes和Service,Pod何时准备好接收流量。如果检查失败,Pod会从Service的负载均衡池中移除。
  • Liveness Probe:判断Pod是否“活着”。如果连续失败,Kubernetes会重启Pod。

一个常见的坑是:模型服务进程还在,但NPU设备驱动层出现异常,导致推理请求全部失败。此时HTTP端口可能仍是通的,/health检查能通过,但业务接口报错。针对这种情况,一个更健壮的做法是:

  1. 编写一个自定义的健康检查脚本,该脚本不仅检查HTTP端口,还尝试执行一次极简的推理请求(例如embedding一个固定短句)。
  2. 将这个脚本放入Pod的另一个“sidecar”容器中,或者作为主容器livenessProbe中exec类型的检查命令。
livenessProbe:
  exec:
    command:
    - /bin/sh
    - -c
    - |
      # 检查端口是否监听
      nc -z localhost 8001 || exit 1
      # 执行一个简单的curl请求,检查模型是否正常响应
      RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" -X POST -H "Content-Type: application/json" -d '{"model":"bge-m3", "input":"test"}' http://localhost:8001/v1/embeddings)
      if [ "$RESPONSE" -ne 200 ]; then exit 1; fi
  initialDelaySeconds: 120
  periodSeconds: 30

4.4 资源清理与vNPU生命周期管理

当不再需要某个模型服务,或需要调整切分方案时,需要妥善清理。

  1. 删除Kubernetes资源:

    kubectl delete -f bge-m3-embedding-deployment.yaml
    kubectl delete -f bge-m3-embedding-service.yaml
    # 等待Pod完全终止
    
  2. 销毁vNPU:确认对应的Pod已删除,且没有其他进程在使用该vNPU后,在宿主机上执行:

    npu-smi set -t destroy-vnpu -i 6 -c 0 -v 100
    npu-smi set -t destroy-vnpu -i 6 -c 0 -v 101
    

    销毁后,物理卡6的资源将恢复为整卡可用状态。

长期运行建议:对于生产环境,可以考虑编写一个简单的Operator或使用Kubernetes的Device Plugin框架来管理vNPU的生命周期,实现vNPU资源的动态创建、绑定和回收,使其更贴合云原生的自动化理念。不过,这需要更深入的开发工作,初期手动管理结合清晰的运维文档也是可行的。

通过以上四个章节的拆解,我们从理念、准备、实战到运维,完整地走通了一条利用昇腾NPU硬切分和Kubernetes实现单卡多模型部署的道路。这套方案将宝贵的硬件资源利用率提升到了新的高度,同时借助K8s获得了企业级应用所需的可维护性、可观测性和弹性。在实际项目中,我遇到过因startupProbe配置过短导致模型反复重启的坑,也见证了通过调整--max-num-batched-tokens将吞吐提升近一倍的喜悦。技术细节的打磨永无止境,但方向已然清晰:让算力如水,随需而动,高效共享。

Kubernetes+vLLM大模型推理服务部署实战:从GPU调度到弹性扩缩容 大模型推理服务从单机脚本走向生产环境时,常面临资源隔离、显存竞争和扩容困难等挑战。vLLM作为高性能推理引擎,通过PagedAttention机制将KV Cache分页管理,大幅提升显存利用率;continuous batching则能动态将并发请求插入当前批次,显著提高吞吐量。而Kubernetes提供容器编排能力,能将GPU视为可调度资源,实现自动扩缩容、故障自愈与滚动更新。将两者结合,即可构建弹性稳定的AI推理平台。本文从Kubernetes的GPU调度原理出发,讲解Device Plugin、显存配 阅读详情

相关推荐

vLLM高效部署实战:从embedding到qwen3模型的完整解决方案

本文提供了基于vLLM推理引擎,从embedding模型到Qwen3大模型的完整高效部署实战指南。详细介绍了如何利用vLLM的PagedAttention技术提升推理并发与速度,通过Docker快速部署embedding与reranker服务,并重点解析了Qwen3系列模型的部署步骤、参数调优及Kubernetes生产级集群部署方案,帮助开发者构建高性能AI应用后端。

weixin_29294395的博客 398

vllm方式部署Deepseek R1、Embedding、Reranker、Qwen3,并集成dify环境

vllm部署deepseek满血满+Qwen3满血版+ dify集成调用

qq_23435961的博客 3766

vLLM高效部署指南:从embedding到senseVoice的GPU资源优化实践

本文详细介绍了vLLM在GPU资源优化中的高效部署实践,涵盖embedding、reranker和senseVoice模型的部署与调优。通过PagedAttention机制和NPU虚拟化技术,显著降低显存占用并提升多模型并发处理能力。文章提供了从环境配置到性能监控的完整指南,帮助开发者在有限GPU资源下实现高效AI模型部署。

weixin_29214559的博客 204

LLMs之Embedding:Qwen3 Embedding的简介、安装和使用方法、案例应用之详细攻略

2025年6月,Qwen3 Embedding 模型系列是 Qwen 家族最新的专有模型,专门为文本嵌入和排序任务而设计。它构建于 Qwen3 系列的密集基础模型之上,提供各种尺寸(0.6B、4B 和 8B)的文本嵌入和重排序模型。该系列继承了其基础模型的卓越多语言能力、长文本理解和推理能力。Qwen3 Embedding 系列代表了在多项文本嵌入和排序任务(包括文本检索、代码检索、文本分类、文本聚类和双文本挖掘)方面的重大进步。

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 8555

vLLM高效部署指南:从embedding到senseVoice的实战技巧(上)

本文是vLLM高效部署指南的上篇,重点介绍了如何利用vLLM推理引擎部署Embedding、Reranker和SenseVoice语音模型。内容涵盖从模型下载、硬件资源规划,到使用Docker和Kubernetes进行实战部署的完整流程,并提供了性能测试与关键参数调优技巧,旨在帮助开发者构建稳定、高性能的AI模型服务。

weixin_29289821的博客 309

昇腾 k8s vnpu配置

本文介绍了如何在NPU910B3卡上设置静态虚拟NPU(vNPU)。主要内容包括:1)设置虚拟化模式(容器或虚拟机模式);2)使用npu-smi命令创建、查看和销毁vNPU;3)修改k8s device插件参数以支持vNPU;4)验证节点vNPU资源;5)使用PyTorch镜像测试vNPU可用性。文档指出MindX DL支持动态虚拟化自动创建vNPU,也支持通过Docker参数直接挂载vNPU到容器。注意每个pod只能使用一张vNPU卡。

1338

vLLM实战部署embedding、reranker、senseVoice模型(上)

概述:modelscope、embedding、postman测试、py脚本测试、reranker、语音;

lonelymanontheway的博客 8455

【汽车主动降噪】【ANC算法优化】基于深度学习的汽车主动噪声控制技术研究及Matlab实现

本文探讨了基于深度学习的汽车主动降噪(ANC)算法优化方案。针对传统FXLMS算法在应对复杂、非线性车内噪声时的局限性,文章详细解析了如何利用神经网络作为非线性建模器、深度滤波器或智能步长调节器来增强ANC系统性能,并提供了完整的Matlab仿真实战流程,展示了深度学习在提升降噪效果和收敛速度方面的潜力。

seed的博客 541

K8s部署vLLM:原理到实践(基于Ubuntu 22.04)

摘要: 本文详细介绍了在Ubuntu 22.04上部署Kubernetes集群并运行vLLM推理框架的完整流程。vLLM凭借PagedAttention和动态批处理技术显著提升GPU推理效率,支持多GPU并行及主流大模型。部署过程涵盖环境准备(NVIDIA驱动、容器运行时)、K8s集群搭建、vLLM容器化部署及优化(GPU调度、模型持久化)。通过K8s的Device Plugin实现GPU资源管理,Service暴露API接口,ConfigMap/Secret管理配置,最终提供高性能、可扩展的LLM推理服务

本人任职于安超云技术架构部,拥有十余年云计算与AI经验。专注AI基础设施、分布式集群、高可用架构、虚拟化、存储、网络及数据库等领域。博客内容以学习笔记为主,力求准确,但个人能力所限,难免疏误。非常欢迎交流指正,期待与您共同探讨技术 2250

从实习生到独立上手:我是如何用海思PQTool搞定IPC图像调试的

本文分享了从实习生到独立使用海思PQTool进行IPC图像调试的成长历程。通过工具搭建、核心参数调整和实战案例,详细介绍了如何高效解决图像质量问题,特别强调了ISP调试中的关键参数和实用技巧,适合刚入门的图像调试工程师参考。

weixin_33756596的博客 313

SAR ADC设计——SAR Logic原理

SAR ADC设计——SAR Logic原理 参考:集成电路设计实践 SAR ADC 清华大学 李福乐 文章目录SAR ADC设计——SAR Logic原理一. Overview二. TSPC(True Single Phase Clock)三. SC_Gen(Sequential Control Generator)四. LATCH_Dynamic五. 时序控制逻辑总结六. SW产生七. DO产生八. GT产生九. SAR Logic模块总结 一. Overview 输入:CKC,CompB,SAMPL

夏风喃喃的博客 1万+

vLLM高效部署指南:从embedding到qwen3.5模型的实战解析

本文详细解析了如何使用vLLM推理引擎高效部署AI模型,从轻量级的embedding模型到百亿参数的Qwen3.5大模型。文章深入探讨了vLLM的核心技术PagedAttention与连续批处理,并提供了从环境准备、模型下载、Docker/Kubernetes部署到性能调优与排错的完整实战指南,旨在帮助开发者解决大模型部署中的高并发与显存瓶颈问题。

zzz56的博客 734

3步搞定专利数据爬取:用Selenium绕过国家知识产权局反爬(附完整代码)

本文详细介绍了3种高效获取专利数据的技术方案,重点解析了使用Selenium绕过国家知识产权局反爬的实战方法,并提供了完整代码示例。文章还探讨了Requests+lxml轻量级方案和混合技术策略,帮助开发者根据需求选择最佳数据爬取方案,特别适合需要专利统计数据的开发者参考。

weixin_29029995的博客 1112

Kubernetes+vLLM大模型推理集群化部署实战与避坑指南

大模型推理服务部署是当前AI工程化落地的核心议题。随着Qwen、Llama等开源模型参数规模增长到数十B级别,单机环境在显存容量、并发吞吐和故障恢复方面迅速触达瓶颈。Kubernetes作为容器编排标准,结合vLLM这一高性能推理引擎,逐渐成为生产环境的主流选择。vLLM基于PagedAttention和continuous batching机制,能显著提升GPU显存利用率和并发处理能力;而Kubernetes提供副本管理、节点调度与故障自愈能力,二者结合可构建弹性、稳定的推理服务集群。围绕容器化部署、GP

weixin_33796205的博客 344

226届数字IC秋招笔试面试全攻略

本文系统介绍了数字IC设计岗位面试的核心技巧,聚焦三大关键环节:自我介绍、项目介绍和技术问题回答。在自我介绍部分,强调1-2分钟结构化表达,突出与岗位匹配的技能和量化成果;项目介绍环节提出"背景-职责-技术-难点-成果"五步框架,建议结合架构图和性能数据展示技术深度;技术问题回答策略包括理解问题、结构化思考、举例说明和诚实应对未知。文章还提供了项目包装方法,指导如何通过量化数据、架构创新展示和技术难点解决方案来突出项目亮点,并附有简历项目描述示例和技术问题回答模板,帮助面试者全方位展示专

2301_79143213的博客 1063

【TRAE调教指南之MCP篇】Context 7 MCP:让AI永远拥有最新技术文档

【TRAE调教指南之MCP篇】Context 7 MCP:让AI永远拥有最新技术文档

funfan的博客 1319

Qwen3-Reranker-8B部署教程:Kubernetes Helm Chart一键部署方案

本文介绍了如何在星图GPU平台上自动化部署Qwen3-Reranker-8B镜像,显著提升检索系统的语义重排序精度。通过平台一键部署能力,用户可快速构建高可用Reranking服务,典型应用于技术文档搜索、问答系统结果优化等场景,实现查询与候选文本的精准匹配与动态排序。

weixin_30632267的博客 276

[yolov5/yolov8修改]替换yolov5/yolov8中的主干网络为EfficientNetv2

针对yolov5和yolov8的主干网络进行替换。

PLH19990227的博客 4147

vLLM 与 Kubernetes:从原理到生产的推理引擎部署实践

大模型推理正从实验室走向生产环境,而 Kubernetes 生态中的算力调度与显存管理成为关键挑战。vLLM 作为高性能推理引擎,通过 PagedAttention 机制优化 KV Cache 利用,配合连续批处理提升并发吞吐,成为云原生 AI 基础设施的重要组件。理解其系统级设计原理,有助于在 GPU 资源规划、模型部署和性能调优中做出合理决策。在实际工程中,从 docker-compose 生产环境部署 vllm,到 qwen3-8b vllm 部署的细节调优,再到与 SGLang 的选型对比,vLLM

weixin_34221654的博客 149

Hermes 教程 03:Skills 系统

摘要:Hermes Skills是一种自我改进机制,可将解决问题的经验保存为可复用技能文档。v0.13.0版本遵循agentskills.io开放标准,与Claude Skills互通。技能创建流程包括发现问题、创建技能文件、加载使用和优化更新四个阶段。系统提供技能检索和自维护机制(Curator),支持技能媒体路由和多种管理命令。内置技能涵盖开发调试、创意头脑风暴等场景,通过积累技能使Hermes更适应用户需求。

程序猿_三产 736

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

大模型部署方案

本文系统解析了大模型(LLM、Embedding、Rerank)的标准化部署方案,涵盖从本地轻量化到云原生的全场景实践。重点对比了Ollama本地部署与vLLM集群方案的技术特点,详细介绍了Embedding模型的容器化实践和Rerank模型在RAG中的关键作用。针对不同规模企业,提供了云平台选型指南和部署决策树,并给出量化压缩、缓存策略等优化技巧。文章指出,未来混合部署模式(关键业务本地化+通用能力上云)仍是平衡安全与成本的最优解,随着技术进步,消费级设备运行百亿模型将成为可能。

weixin_45809780的博客 1572

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Qwen3-Reranker-4B入门必看:Qwen3-Reranker-4B与Qwen3-Embedding协同调用最佳实践

本文介绍了如何在星图GPU平台上自动化部署Qwen3-Reranker-4B镜像,实现高效语义重排序功能。通过vLLM一键托管与Gradio可视化界面,用户可快速验证查询与文档的精准匹配效果,典型应用于RAG系统、企业知识库及代码助手等场景,显著提升检索准确率与响应质量。

weixin_35835018的博客 114

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

用GPU Droplets构建生产级RAG应用:硬件适配与流水线重构

RAG(检索增强生成)作为当前AI工程落地的核心范式,其性能瓶颈正从模型算法层快速下移至硬件执行层。当Embedding编码、向量检索与LLM重排序密集耦合时,CPU架构的串行延迟与内存带宽限制成为主要制约;而GPU凭借高吞吐并行能力,可显著提升QPS与端到端响应速度,但需深度适配显存容量、PCIe拓扑与CUDA运行时环境。GPU Droplets作为一种标准化、按需交付的轻量GPU算力单元,为RAG提供了开箱即用的硬件确定性——它规避了自建集群的运维复杂度,又避免了盲目堆显存导致的资源浪费。典型应用场景包

weixin_33698043的博客 376

LLM工程化六层栈:从模型治理到可观测部署的完整闭环

大语言模型(LLM)工程化不是单点技术优化,而是覆盖模型、推理、编排、评估、可观测与部署六大核心层级的系统性实践。其本质是将学术模型转化为可监控、可验证、可交付的生产服务,关键技术原理包括动态批处理、前缀缓存、OpenTelemetry全链路追踪、AWQ量化压缩及SLI/SLO驱动的可靠性保障。该体系显著提升LLM服务的吞吐稳定性、成本可控性与合规可信度,广泛应用于智能客服、RAG文档助手、金融合规问答等需高可用与强审计的工业场景。本文聚焦LLM Stack六层协同落地,深入解析vLLM推理优化、Llama

weixin_30251829的博客 334

LightRAG Docker 部署完全指南:环境配置、镜像构建与生产级容器运维

本篇指南以 LightRAG 官方的 [DockerDeployment.md](https://link.gitcode.com/i/15daeb20bc2bb3947d266dbeac8b0593) 为骨架,系统讲解如何通过 Docker / Docker Compose 部署这套轻量级知识图谱检索增强生成(RAG)服务:从 `.env` 环境变量设计、`docker compose` 快速启

gitblog_00223的博客 163

Xinference推理框架

Xinference ≠ vLLM/Ollama 的竞品,而是更高层的“模型服务平台”。它整合了 vLLM、SGLang、llama.cpp 等引擎,并大幅扩展了模型类型和部署能力。如果你只需要跑 LLM,Ollama 或 vLLM 可能更简单;但如果你需要多模型协同、生产级部署、多模态能力,Xinference 是更全面的选择。官网:https://github.com/xorbitsai/inference文档:https://inference.readthedocs.io/组件。

EmotionComputer 1160
上一篇: AD LDS vs AD DS深度对比:Windows Server 2025轻量目录服务选型指南
下一篇: 避开这些坑!中国大学MOOC学习中的常见误区与高效学习技巧
vim8coder
博客等级 码龄1天 0粉丝 1693原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值