【大模型】一个基座模型部署多个lora

本文介绍了VLLM框架如何优化多任务LORA模型微调,通过整合多个微调任务并允许单独加载LORA层,实现资源有效利用和权限管理。还提供了在openshift上部署VLLM的示例,包括多卡部署和NCCL升级等技术细节。
摘要由CSDN通过智能技术生成

接上篇,我们提到,可以使用vllm这个框架加载合并后的lora百川模型。

在实际落地中,如果我们有多个微调任务,难道要分别部署多个微调之后的模型吗?这对GPU的消耗也太高了吧!一种很直接的思路是,将多个微调任务整合起来,一次性lora微调多个任务,这样就只需要部署一个微调模型了。

但如果接到了新的微调需求,就需要把所有lora任务都重新训练一遍,以免遗忘。这样很不方便,从前上线的微调任务在融入了新微调训练数据之后又需要重新训练和重新测试。vllm推出了一个很棒的功能,可以分别加载base模型和lora层,并且可以加载多个lora层,通过指定lora层名字确定到底调用哪一个。这种特性是非常有价值的:同时加载N套微调参数,这样做不会影响大模型原有能力,通过选择微调层可以提供给用户不同的专项微调能力,而且可以实现权限管控,防止敏感信息泄露,此外更多新微调能力的接入也非常方便。可以说,vllm这项设计将使得它显著胜出其他不具备这种能力的LLM加速推理框架。

下面给出一个openshift上部署vllm 单基座多lora的例子

kind: Deployment
apiVersion: apps/v1
metadata:
  name: YOUR-APP-NAME
  namespace: YOU-NAMESPACE
spec:
  replicas: 0
  selector:
    matchLabels:
      app: YOUR-APP-NAME
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: YOUR-APP-NAME
    spec:
      restartPolicy: Always
      schedulerName: default-scheduler
      terminationGracePeriodSeconds: 30
      nodeName: YOUR-COMPUTE-NODE
      securityContext:
        runAsUser: 0
      containers:
        - resources:
            limits:
              cpu: '6'
              memory: 64Gi
              nvidia.com/gpu: '2'
            requests:
              cpu: 200m
              memory: 16Gi
              nvidia.com/gpu: '2'
          terminationMessagePath: /dev/termination-log
          name: vllm-container
          env:
            - name: HUGGING_FACE_HUB_TOKEN
              value: <secret>
            - name: NVIDIA_VISIBLE_DEVICES
              value: all
            - name: CUDA_VISIBLE_DEVICES
              value: '0'
          ports:
            - containerPort: 8000
              protocol: TCP
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - name: model-volume
              mountPath: /models/Qwen1.5-14B-Chat
              subPath: Qwen1.5-14B-Chat
            - name: model-volume
              mountPath: /models/finetune-qwen-14b-risk
              subPath: finetune-qwen-14b-risk
            - name: model-volume
              mountPath: /models/finetune-qwen-14b-test
              subPath: finetune-qwen-14b-test
          terminationMessagePolicy: File
          image: 'vllm-openai:v0.4.0.post1'
          args:
            - '--model'
            - /models/Qwen1.5-14B-Chat
            - '--gpu-memory-utilization'
            - '0.55'
            - '--trust-remote-code'
            - '--chat-template'
            - /models/Qwen1.5-14B-Chat/qwen1_5_14B_template.jinja
            - '--dtype'
            - float16
            - '--max-model-len'
            - '1000'
            - '--max-num-seqs'
            - '10'
            - '--lora-modules'
            - lora1=/models/finetune-qwen-14b-risk
            - lora2=/models/finetune-qwen-14b-test
            - '--enable-lora'
            - '--max-lora-rank'
            - '64'
      volumes:
        - name: model-volume
          persistentVolumeClaim:
            claimName: gpu-g2-pvc
      dnsPolicy: ClusterFirst
      tolerations:
        - key: nvidia.com/gpu
          effect: NoSchedule
  

多卡部署

记得升级nccl

args部分增加

 - '--tensor-parallel-size=2'
 - '--disable-custom-all-reduce'
 - '--max-context-len-to-capture=300000'

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基座模型LoRa模型是两种不同的技术模型,它们在应用场景和功能上有所不同,因此可以选择分开部署基座模型是指在软件架构中,将核心业务逻辑和基础设施分离的模式。它通过将基础设施和核心业务逻辑解耦,使得系统更加灵活和可扩展。基座模型可以将一些通用的功能,例如用户认证、权限管理、日志记录等模块集中在基础设施中,其他具体的业务功能则可以在不同的模块中进行开发。这种模式可以提高代码的复用性,简化系统的维护和扩展。 LoRa模型是指采用LoRa技术进行通信的模型LoRa是一种低功耗广域网技术,适用于物联网等远距离无线通信场景。LoRa模型通常使用LoRa网关与终端设备进行通信,通过LoRaWAN协议实现设备之间的连接和数据传输。LoRa模型适用于需要远程监控、数据采集、传感器网络等场景,可以实现低成本、低功耗的无线通信。 将基座模型LoRa模型分开部署可以实现代码的解耦和模块化。基座模型可以作为系统的基础设施,提供一些通用的功能。而LoRa模型则可以作为一个独立的模块,用于处理LoRa通信的相关业务。这样的分开部署可以使系统更加灵活和可扩展,降低不同模块之间的耦合度,提高系统的可维护性和可扩展性。 另外,分开部署还可以使得不同模型的开发团队专注于自己的领域,提高开发效率。基座模型的开发团队可以专注于基础设施的建设和维护,LoRa模型的开发团队则可以专注于LoRa通信相关的业务逻辑。这样的分工可以使开发过程更加高效和有序。 综上所述,基座模型LoRa模型分开部署可以实现代码解耦、模块化开发,提高系统的灵活性和可扩展性,同时也提升了团队的开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值