技术解读|Triton Server 基于 Dragonfly 加速分发模型

【工程实践】Triton Inference Server Triton Inference Server是英伟达Nvidia开源的高性能推理,可以在CPU、GPU上加速模型推理的一个工具。Triton Inference Server是一个适用于深度学习与机器学习模型的推理服务引擎,支持将TensorRT、TensorFlow、PyTorch或ONNX等多种AI框架的模型部署为在线推理服务,并支持多模型管理、自定义backend等功能。将模型转成onnx之后,使用Triton Inference Server加载并提供服务,推理速度提升,内存占用减少。 阅读详情

90aeb2418d5dbf90b4382bc939279959.gif

Dragonfly GitHub:

https://github.com/dragonflyoss/Dragonfly2

本文主要解决在 Triton Server 模型拉取时,存在的中心化的模型仓库带宽瓶颈问题。当在 Triton Server 下载模型的时候,文件相对较大且会有并发下载模型的场景。这样很容易导致存储带宽被打满,从而引起下载过慢的情况,影响推理服务的使用。

Triton Server 链接:

https://github.com/triton-inference-server/server

6def6417e52af9a5a5db89bf799431c6.png

这种方式比较好的解决方案是使用 Dragonfly 的 P2P 技术利用每个节点的闲置带宽缓解模型仓库的带宽压力,从而达到加速效果。在最理想的情况下 Dragonfly 可以让整个 P2P 集群中只有一个节点回源下载模型,其他节点流量均使用集群内 P2P 内网带宽。

b83161b0eab7d3eff4cd9e4c75f22ad5.png

   Part.1 部署  

通过集成 Dragonfly Repository Agent 到 Triton Server 中,使下载流量通过 Dragonfly 去拉取 S3,GCS,ABS 中存储的模型文件, 并在 Triton Serve 中进行注册。Triton Server 插件维护在 dragonfly-repository-agent 仓库中。

1. 依赖

所需软件

版本

链接

Kubernetes
cluster

1.20+

https://kubernetes.io/

Helm

3.8.0+

https://helm.sh/

Triton Server

23.08-py3

https://github.com/triton-inference-server/server

注意:如果没有可用的 Kubernetes 集群进行测试,推荐使用 Kind。


Kind 链接:https://kind.sigs.k8s.io/

2. Dragonfly Kubernetes 集群搭建

基于 Kubernetes cluster 详细安装文档可以参考 quick-start-kubernetes。

| 准备 Kubernetes 集群

创建 Kind 多节点集群配置文件 kind-config.yaml, 配置如下:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control-plane
  - role: worker
  - role: worker

使用配置文件创建 Kind 集群:

kind create cluster --config kind-config.yaml

切换 Kubectl 的 context 到 Kind 集群:

kubectl config use-context kind-kind

| Kind 加载 Dragonfly 镜像

下载 Dragonfly Latest 镜像:

docker pull dragonflyoss/scheduler:latest
docker pull dragonflyoss/manager:latest
docker pull dragonflyoss/dfdaemon:latest

Kind 集群加载 Dragonfly Latest 镜像:

kind load docker-image dragonflyoss/scheduler:latest
kind load docker-image dragonflyoss/manager:latest
kind load docker-image dragonflyoss/dfdaemon:latest

| 基于 Helm Charts 创建 Dragonfly 集群

创建 Helm Charts 配置文件 charts-config.yaml。可以根据对象存储的下载路径修改dfdaemon.config.proxies.regx来调整路由匹配规则。示例中默认匹配了 AWS S3 的请求,并且添加regx:.*models.*以匹配存储桶models的请求,配置如下:

scheduler:
  image: dragonflyoss/scheduler
  tag: latest
  replicas: 1
  metrics:
    enable: true
  config:
    verbose: true
    pprofPort: 18066


seedPeer:
  image: dragonflyoss/dfdaemon
  tag: latest
  replicas: 1
  metrics:
    enable: true
  config:
    verbose: true
    pprofPort: 18066


dfdaemon:
  image: dragonflyoss/dfdaemon
  tag: latest
  metrics:
    enable: true
  config:
    verbose: true
    pprofPort: 18066
    proxy:
      defaultFilter: 'Expires&Signature&ns'
      security:
        insecure: true
        cacert: ''
        cert: ''
        key: ''
      tcpListen:
        namespace: ''
        port: 65001
      registryMirror:
        url: https://index.docker.io
        insecure: true
        certs: []
        direct: false
      proxies:
        - regx: blobs/sha256.*
        # 代理匹配 Model Bucket 的所有 HTTP Downlowd 请求
        - regx: .*models.* 


manager:
  image: dragonflyoss/manager
  tag: latest
  replicas: 1
  metrics:
    enable: true
  config:
    verbose: true
    pprofPort: 18066


jaeger:
  enable: true

使用配置文件部署 Dragonfly Helm Charts:

$ helm repo add dragonfly https://dragonflyoss.github.io/helm-charts/
$ helm install --wait --create-namespace --namespace dragonfly-system dragonfly dragonfly/dragonfly -f charts-config.yaml
LAST DEPLOYED: Wed Nov 29 21:23:48 2023
NAMESPACE: dragonfly-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
1. Get the scheduler address by running these commands:
  export SCHEDULER_POD_NAME=$(kubectl get pods --namespace dragonfly-system -l "app=dragonfly,release=dragonfly,component=scheduler" -o jsonpath={.items[0].metadata.name})
  export SCHEDULER_CONTAINER_PORT=$(kubectl get pod --namespace dragonfly-system $SCHEDULER_POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
  kubectl --namespace dragonfly-system port-forward $SCHEDULER_POD_NAME 8002:$SCHEDULER_CONTAINER_PORT
  echo "Visit http://127.0.0.1:8002 to use your scheduler"


2. Get the dfdaemon port by running these commands:
  export DFDAEMON_POD_NAME=$(kubectl get pods --namespace dragonfly-system -l "app=dragonfly,release=dragonfly,component=dfdaemon" -o jsonpath={.items[0].metadata.name})
  export DFDAEMON_CONTAINER_PORT=$(kubectl get pod --namespace dragonfly-system $DFDAEMON_POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
  You can use $DFDAEMON_CONTAINER_PORT as a proxy port in Node.


3. Configure runtime to use dragonfly:
  https://d7y.io/docs/getting-started/quick-start/kubernetes/




4. Get Jaeger query URL by running these commands:
  export JAEGER_QUERY_PORT=$(kubectl --namespace dragonfly-system get services dragonfly-jaeger-query -o jsonpath="{.spec.ports[0].port}")
  kubectl --namespace dragonfly-system port-forward service/dragonfly-jaeger-query 16686:$JAEGER_QUERY_PORT
  echo "Visit http://127.0.0.1:16686/search?limit=20&lookback=1h&maxDuration&minDuration&service=dragonfly to query download events"

检查 Dragonfly 是否部署成功:

$ kubectl get pod -n dragonfly-system 
NAME                                 READY   STATUS    RESTARTS       AGE
dragonfly-dfdaemon-8qcpd             1/1     Running   0              2m45s
dragonfly-dfdaemon-qhkn8             1/1     Running   0              2m45s
dragonfly-jaeger-6c44dc44b9-dfjfv    1/1     Running   0              2m45s
dragonfly-manager-549cd546b9-ps5tf   1/1     Running   0              2m45s
dragonfly-mysql-0                    1/1     Running   0              2m45s
dragonfly-redis-master-0             1/1     Running   0              2m45s
dragonfly-redis-replicas-0           1/1     Running   0              2m45s
dragonfly-redis-replicas-1           1/1     Running   0              2m7s
dragonfly-redis-replicas-2           1/1     Running   0              101s
dragonfly-scheduler-0                1/1     Running   0              2m45s
dragonfly-seed-peer-0                1/1     Running   0              2m45s

| 暴露 Proxy 服务端口

创建dfstore.yaml 配置文件,暴露 Dragonfly Peer 的 HTTP Proxy 服务监听的端口,用于和 Triton Server 交互。targetPort如果未在 charts-config.yaml 中修改默认为65001, port 可根据实际情况设定值,建议也使用65001。

kind: Service
apiVersion: v1
metadata:
  name: dfstore
spec:
  selector:
    app: dragonfly
    component: dfdaemon
    release: dragonfly


  ports:
    - protocol: TCP
      port: 65001
      targetPort: 65001


  type: NodePort

创建 Service:

kubectl --namespace dragonfly-system apply -f dfstore.yaml

将本地的65001端口流量转发至 Dragonfly 的 Proxy 服务:

kubectl --namespace dragonfly-system port-forward service/dfstore 65001:65001

3. 安装 Dragonfly Repository Agent 插件

| 设置 Dragonfly Repository Agent 配置

创建dragonfly_config.json配置文件,示例如下:

{
  "proxy": "http://127.0.0.1:65001", 
  "header": {
  },
  "filter": [
    "X-Amz-Algorithm",
    "X-Amz-Credential&X-Amz-Date",
    "X-Amz-Expires",
    "X-Amz-SignedHeaders",
    "X-Amz-Signature"
  ]
}
  • proxy: Dragonfly  Peer 的 HTTP Proxy 的地址。

  • header: 为请求增加请求头。

  • filter: 用于生成唯一的任务,并过滤 URL 中不必要的查询参数。

配置文件中的filter部分, 根据对象存储类型设置不同值:

类型

值

OSS

["Expires","Signature","ns"]

S3

["X-Amz-Algorithm", "X-Amz-Credential", "X-Amz-Date", "X-Amz-Expires", "X-Amz-SignedHeaders", "X-Amz-Signature"]

OBS

["X-Amz-Algorithm", "X-Amz-Credential", "X-Amz-Date", "X-Obs-Date", "X-Amz-Expires", "X-Amz-SignedHeaders", "X-Amz-Signature"]

| 设置模型仓库配置

创建cloud_credential.json云存储凭证文件,示例如下:

{
  "gs": {
    "": "PATH_TO_GOOGLE_APPLICATION_CREDENTIALS",
    "gs://gcs-bucket-002": "PATH_TO_GOOGLE_APPLICATION_CREDENTIALS_2"
  },
  "s3": {
    "": {
      "secret_key": "AWS_SECRET_ACCESS_KEY",
      "key_id": "AWS_ACCESS_KEY_ID",
      "region": "AWS_DEFAULT_REGION",
      "session_token": "",
      "profile": ""
    },
    "s3://s3-bucket-002": {
      "secret_key": "AWS_SECRET_ACCESS_KEY_2",
      "key_id": "AWS_ACCESS_KEY_ID_2",
      "region": "AWS_DEFAULT_REGION_2",
      "session_token": "AWS_SESSION_TOKEN_2",
      "profile": "AWS_PROFILE_2"
    }
  },
  "as": {
    "": {
      "account_str": "AZURE_STORAGE_ACCOUNT",
      "account_key": "AZURE_STORAGE_KEY"
    },
    "as://Account-002/Container": {
      "account_str": "",
      "account_key": ""
    }
  }
}

同时,通过 Dragonfly 拉取模型,需要修改模型中配置文件config.pbtxt,添加如下代码:

model_repository_agents
{
  agents [
    {
      name: "dragonfly",
    }
  ]
}

densenet_onnx 示例提供已修改的配置及模型文件。其中densenet_onnx/config.pbtxt文件修改如下:

name: "densenet_onnx"
platform: "onnxruntime_onnx"
max_batch_size : 0
input [
  {
    name: "data_0"
    data_type: TYPE_FP32
    format: FORMAT_NCHW
    dims: [ 3, 224, 224 ]
    reshape { shape: [ 1, 3, 224, 224 ] }
  }
]
output [
  {
    name: "fc6_1"
    data_type: TYPE_FP32
    dims: [ 1000 ]
    reshape { shape: [ 1, 1000, 1, 1 ] }
    label_filename: "densenet_labels.txt"
  }
]
model_repository_agents
{
  agents [
    {
      name: "dragonfly",
    }
  ]
}

4. Triton Server 集成 Dragonfly Repository Agent 插件

| Docker 部署 Triton Server

拉取自带插件的 dragonflyoss/dragonfly-repository-agent镜像。构建细节参考 Dockerfile。

docker pull dragonflyoss/dragonfly-repository-agent:latest

运行容器并 mount model-repository 和 dragonfly-repository-agent 配置目录:

docker run --network host --rm \
  -v ${path-to-config-dir}:/home/triton/ \
  dragonflyoss/dragonfly-repository-agent:latest tritonserver \
  --model-repository=${model-repository-path}
  • path-to-config-dir: 

    dragonfly_config.json 以及 cloud_credential.json 文件所在目录。

  • model-repository-path:

    远程模型仓库地址。

正确输出结果有以下内容:

=============================
== Triton Inference Server ==
=============================
successfully loaded 'densenet_onnx'
I1130 09:43:22.595672 1 server.cc:604] 
+------------------+------------------------------------------------------------------------+
| Repository Agent | Path                                                                   |
+------------------+------------------------------------------------------------------------+
| dragonfly        | /opt/tritonserver/repoagents/dragonfly/libtritonrepoagent_dragonfly.so |
+------------------+------------------------------------------------------------------------+


I1130 09:43:22.596011 1 server.cc:631] 
+-------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Backend     | Path                                                            | Config                                                                                                                                                        |
+-------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| pytorch     | /opt/tritonserver/backends/pytorch/libtriton_pytorch.so         | {}                                                                                                                                                            |
| onnxruntime | /opt/tritonserver/backends/onnxruntime/libtriton_onnxruntime.so | {"cmdline":{"auto-complete-config":"true","backend-directory":"/opt/tritonserver/backends","min-compute-capability":"6.000000","default-max-batch-size":"4"}} |
+-------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+


I1130 09:43:22.596112 1 server.cc:674] 
+---------------+---------+--------+
| Model         | Version | Status |
+---------------+---------+--------+
| densenet_onnx | 1       | READY  |
+---------------+---------+--------+


I1130 09:43:22.598318 1 metrics.cc:703] Collecting CPU metrics
I1130 09:43:22.599373 1 tritonserver.cc:2435] 
+----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Option                           | Value                                                                                                                                                                                                           |
+----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| server_id                        | triton                                                                                                                                                                                                          |
| server_version                   | 2.37.0                                                                                                                                                                                                          |
| server_extensions                | classification sequence model_repository model_repository(unload_dependents) schedule_policy model_configuration system_shared_memory cuda_shared_memory binary_tensor_data parameters statistics trace logging |
| model_repository_path[0]         | s3://192.168.36.128:9000/models                                                                                                                                                                                 |
| model_control_mode               | MODE_NONE                                                                                                                                                                                                       |
| strict_model_config              | 0                                                                                                                                                                                                               |
| rate_limit                       | OFF                                                                                                                                                                                                             |
| pinned_memory_pool_byte_size     | 268435456                                                                                                                                                                                                       |
| min_supported_compute_capability | 6.0                                                                                                                                                                                                             |
| strict_readiness                 | 1                                                                                                                                                                                                               |
| exit_timeout                     | 30                                                                                                                                                                                                              |
| cache_enabled                    | 0                                                                                                                                                                                                               |
+----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+


I1130 09:43:22.610334 1 grpc_server.cc:2451] Started GRPCInferenceService at 0.0.0.0:8001
I1130 09:43:22.612623 1 http_server.cc:3558] Started HTTPService at 0.0.0.0:8000
I1130 09:43:22.695843 1 http_server.cc:187] Started Metrics Service at 0.0.0.0:8002

执行指令,查看 Dragonfly 日志:

kubectl exec -it -n dragonfly-system dragonfly-dfdaemon-<id> -- tail -f /var/log/dragonfly/daemon/core.log

检查日志是否有以下内容:

{
 "level":"info","ts":"2024-02-02 05:28:02.631",
 "caller":"peer/peertask_conductor.go:1349",
 "msg":"peer task done, cost: 352ms",
 "peer":"10.244.2.3-1-4398a429-d780-423a-a630-57d765f1ccfc",
 "task":"974aaf56d4877cc65888a4736340fb1d8fecc93eadf7507f531f9fae650f1b4d",
 "component":"PeerTask",
 "trace":"4cca9ce80dbf5a445d321cec593aee65"
}

| 功能验证

对于上述上传的densenet_onnx模型,运行以下命令进行验证:

docker run -it --rm --net=host nvcr.io/nvidia/tritonserver:23.08-py3-sdk /workspace/install/bin/image_client -m densenet_onnx -c 3 -s INCEPTION /workspace/images/mug.jpg

推理成功的响应:

Request 0, batch size 1
Image '/workspace/images/mug.jpg':
    15.349563 (504) = COFFEE MUG
    13.227461 (968) = CUP
    10.424893 (505) = COFFEEPOT

   Part.2 性能测试  

测试在单机情况下,集成 Dragonfly 后下载模型的性能对比,使用的对象存储为 minio。由于机器本身网络环境、配置等影响,实际下载时间不具有参考价值。不同场景下下载速度对应的比例较有意义:

983928223e6bef072938bab66789a411.png

  • Triton API:

    直接通过 URL 下载对象存储里的模型文件。

  • Triton API & Dragonfly Cold Boot:

    通过 Dragonfly 代理模式进行回源下载,没有命中任何缓存所花费的时间。

  • Hit Remote Peer:

    通过 Dragonfly 代理模式,在命中 Dragonfly 的远端 Peer 缓存的情况下的下载时间。

  • Hit Local Peer:

    通过 Dragonfly 代理模式,在命中 Dragonfly 的本地 Peer 缓存的情况下的下载时间。

测试结果表明 Triton Server 集成 Dragonfly,能有效减少下载时间。在命中缓存 ,尤其是本地缓存的情况下有较大的提升。即使是回源下载的性能也和直接下载的相差无几。注意的是本次测试为单机测试,意味着在命中缓存的情况下,性能瓶颈主要在磁盘。如果是多台机器部署的 Dragonfly 进行 P2P 下载的情况,模型下载速度会更快。

   Part.3 相关链接  

Dragonfly 社区:

  • Website:

    https://d7y.io/

  • GitHub Repo:

    https://github.com/dragonflyoss/Dragonfly2

  • Dragonfly Repository Agent Github Repo: 

    https://github.com/dragonflyoss/dragonfly-repository-agent

  • Slack Channel:

    #dragonfly on CNCF Slack

  • Discussion Group:

    dragonfly-discuss@googlegroups.com

NVIDIA Triton Inference Server:

  • Website:

    https://developer.nvidia.com/triton-inference-server

  • GitHub Repo:

    https://github.com/triton-inference-server/server

Dragonfly GitHub 仓库二维码

6886cdbee236e9a890450317f24bdd55.jpeg

   推荐阅读   

509f9763111dcd39016d5bf5973de7ee.jpeg

Dragonfly 社区技术分享|Nydus Registry 鉴权与 Mount 改进

4298c24d4e4806bc2da97b4cccf51ed7.jpeg

Dragonfly 社区技术分享|Nydus 远端转换缓存实现

b54b9ba2dc4b3f4c7165fdb5a9593d6d.jpeg

Dragonfly 加速 Git LFS 大文件分发

3f4dcf22d34160febc0f0f48eb8ec455.jpeg

Nydus Acceld 去 Containerd 服务化

9dc55fb7412f97dd2d5ed5294b76a0bb.png

【高可用AI推理服务】使用WSL2部署Triton Inference Server推理服务器 Triton Inference Server(Triton推理服务器)是NVIDIA推出的高性能推理服务器,皆在实现简化ML Ops的工作流程。PytorchONNXTensorRTTriton Infercen Server极大程度的便利了AI开发者的工作流,通过将模型统一放置在模型仓库内进行统一管理,以及gRPC/HTTP2通信协议,使得Triton在保证了高性能的同时,也有着极强的高可用性和扩展性。针对如何使用Triton部署自己训练的模型,以及如何编写。 阅读详情

相关推荐

深度学习部署:Triton(Triton inference server)【旧称:TensorRT serving,专门针对TensorRT设计的服务器框架,后来变为Triton,支持其他推理后端】

一般来说,我们都是从最主要的server开始编,编译的时候会链接core、common、backend中的代码,其他自定义backend(比如tensorrt_backend)在编译的时候也需要带上common、core、backend这三个仓库,这些关系我们可以从相应的CMakeList中找到。官方也提供了客户端,C++和python的都可以有,可以直接使用官方的,也可以根据官方提供的http协议构造自己的客户端,只要会构造body,一切都很简单。就可以发送请求,结果也会传回response里。

u013250861的博客 2966

tritonserver学习之一:triton使用流程

进入client镜像,测试tritonserver推理。

liupenglove的专栏 4748

【信息科学与工程学】【通信工程】第七十六篇 网络解决方案设计03

继续围绕智算中心相关的组网设计、光路设计、波分设计、OTN设备、交换机设备、组网拓扑、网络操作系统、业务区/管理区/存储区、光设计、租户设计、电磁设计、队列设计、QoS设计、调度设计、组合设计等领域。: 若Tpxe​=2min,Tos_install​=5min,Tagent​=0.5min,Tconfig​=0.5min,则Tready​=8min。: 若N=2000,Ms​=2,Nstorage​=128,Mss​=2,则Nip​=2000×2+128×2=4256,需要/20子网。

weixin_49199313的博客 206

Triton测试

下载client sdk ,如: v2.25.0_ubuntu2004.clients.tar.gz,解压到本地,执行测试,到docs目录下,下载模型,启动tritonserver.这个以deepstream的triton为例。下载server的代码到本地,git clone。2.1 启动tritonserver。2.2 测试demo,从。1 启动docker。

evsqiezi 1152

电源工程师必看:平均电流模式BUCK双环控制详解(从传递函数到Psim仿真)

本文详细解析了平均电流模式BUCK变换器的双环控制策略,从传递函数推导到Psim仿真实现。针对电源工程师关注的环路设计和稳定性问题,深入比较了电压模式、峰值电流模式和平均电流模式的优缺点,并提供了12V/3A BUCK变换器的完整设计案例,帮助工程师掌握平均电流控制这一中高功率应用的首选方案。

weixin_42696271的博客 398

zabbix5+dify+ollama+deepseek+企业微信 本地部署实现故障智能分析

zabbix5告警信息deepseek自动分析

slc14211421的专栏 3073

指南:Triton Inference Server

关于triton inference server的详细记录,涉及安装,服务部署,优化。通过例子一步一步搭建一个可实际使用的服务。

5670

mcgs数据导出到U盘

mcgs触摸屏在工业中应用还是很多的,尤其他的脚本功能策略功能等将开放性放到了最大,让用户可以根据实际需求进行自由创作,正因为这样,对一些初学者就不是很友好,初学者想要简单操作就能实现功能,但是mcgs不可能两者兼备,在做工业设备,一些数据的采集保存就比较常见,但是mcgs没有相关按钮能够直接实现将数据导出到U盘的功能。这里我给大家讲解关于mcgs将报警历史记录、日志记录、历史数据记录导出到U盘的方法。

qq_24866535的博客 6233

Dragonfly 基于 P2P 的文件和镜像分发系统

Dragonfly 是一款基于 P2P 的智能镜像和文件分发工具。它旨在提高大规模文件传输的效率和速率,最大限度地利用网络带宽。在应用分发、缓存分发、日志分发和镜像分发等领域被大规模使用。Dragonfly 面向镜像分发和文件分发,结合 P2P 网络和服务器集群的思想,向用户提供稳定的,高效的下载服务。Dragonfly 希望在服务器内部构建 P2P 网络,将服务器的不同主机节点分为 Manager、Scheduler、Seed Peer 以及 Peer 四个角色,分别提供不同的功能。

渡江客涂鸦板 824

Win10局域网内文件共享+远程桌面控制保姆级教程(含常见问题解决)

本文提供Win10局域网内文件共享和远程桌面控制的详细教程,包括环境检查、共享文件夹设置、远程桌面连接步骤及常见问题解决方案。通过内置功能实现高效办公协作,提升多设备协同工作效率,特别适合需要频繁传输文件或远程控制场景的专业人士。

rose2的博客 777

TMS320C6678开发笔记1-6---C6678单核烧写程序

第6节 单核烧写加载程序 6.1节 TI参考文档 参考文档:《KeystoneI Bootloader Resources and FAQ》讲的非常好,建议一定要看 https://processors.wiki.ti.com/index.php/KeystoneI_Bootloader_Resources_and_FAQ#Direct_Boot_Examples_.28without_IBL.29 里面有三个工程: C6678 EVM SPI boot example C6657 EVM ..

kunkliu的博客 5695

Dragonfly-一个基于p2p的高效文件传输系统

Dragonfly 是阿里开源的一款基于 P2P 的智能镜像和文件分发工具。它旨在提高文件传输的效率和速率,最大限度地利用网络带宽。尤其是在分发大量数据时,例如应用分发、缓存分发、日志分发和镜像分发。它能让所有类型的文件、镜像或数据分发变得简单而经济。

ecloud_developer的博客 1548

[捷稀 JCG Q30 Pro 刷机说明] 以刷入openwrt24.10为例

摘要: 本文详细介绍了捷稀JCG Q30 Pro路由器刷入OpenWrt 24.10系统的步骤。通过先刷入OpenWrt 23.05过渡固件,再升级Uboot,最后通过TFTP加载工厂镜像完成刷机。关键步骤包括解锁分区、刷写Uboot、进入恢复模式及配置网络。文章还提供了无线设置、Tailscale内网穿透等进阶命令,并附参考文档和固件下载链接。适用于有一定技术基础的玩家,需注意操作风险,严格按流程执行。

贤时间 7138

Dragonfly 介绍、更新和快手中的 AI 模型分发实践

Nydus 主要职责是镜像的去重、压缩,并且在镜像启动、运行过程当中进行按需加载,可以将端到端的启动速度从分钟级提升到秒级,同时 Nydus 也是由阿里云、蚂蚁、字节跳动三家公司研发的,DragonFly P2P 的解决方案。介绍了快手 AI 平台的业务背景效果显著。

socialpath的博客 2296

element的el-cascader组件动态加载,以及报错处理问题

Blocked aria-hidden on an element because its descendant retained focus. The focus must not be hidden from assistive technology users. 报错处理

weixin_56527169的博客 1264

YOLOv11改进 | 集成FEM、FFM与SCAM即插即用模块:特征增强、融合与空间上下文建模新范式

FEM解决特征表达不足问题,增强关键特征响应FFM优化多尺度融合,提升小目标检测精度SCAM建模空间上下文,改善目标交互预测在保持YOLOv11实时性优势的同时,实现mAP+8.1%的显著提升,特别在复杂光照、密集目标、交互预测场景表现突出。其模块化设计使开发者可根据需求灵活组合,为各种复杂场景提供定制化解决方案。未来,随着跨模态扩展与神经架构搜索的深入,YOLOv11-FSC将进一步推动目标检测技术向更智能、更高效的方向发展。

走向CTO的路上... 988

Nvidia DeepStream和Triton Server学习经验分享

介绍DeepStream和Triton Server

u011268946的博客 1943

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【ceph相关】s3预签名url(presign)

一、前言 1、预签名url 当需要将s3资源提供给其他用户访问,但又不想直接通过桶的访问权限,可以通过生成预签名url方式生成一个临时url提供给用户访问。 生成预签名url时,可以通过指定过期时间参数,限制用户访问时间。由于SigV4签名密钥最大有效期为7天,故生成的预签名url有效期最大也只有7天。 2、签名版本 Amazon S3有两个签名版本SigV2和SigV4版本,考虑到安全性和使用效率等因素,目前官方已停止SigV2版本的支持。 可以通过预签名url判断签名版本,通常SigV2预签名url带有

Luxf0的博客 5644

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

深度学习部署神器——triton inference server入门教程指北

triton作为一个NVIDIA开源的商用级别的服务框架,个人认为很好用而且很稳定**,API接口的变化也不大,我从2020年的20.06切换到2022年的22.06,两个大版本切换,一些涉及到代码的工程变动很少,稍微修改修改就可以直接复用,很方便。 > 本系列讲解的版本也是基于22.06。

老潘的博客 7221

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

深度学习部署神器——triton-inference-server开发教程指北

肯定很多人想知道triton干啥的,学习这个有啥用?这里简单解释一下:triton可以充当服务框架去部署你的深度学习模型,其他用户可以通过http或者grpc去请求,相当于你用flask搭了个服务供别人请求,当然相比flask的性能高很多了triton也可以摘出C-API充当多线程推理服务框架,去除http和grpc部分,适合本地部署多模型,比如你有很多模型要部署,然后分时段调用,或者有pipeline,有了triton就省去你处理显存、内存和线程的麻烦。

具身机器人和通用AI 1736

Triton Server 快速入门

Triton提供了一个叫做instance-group的模型配置项,允许指定每一个模型允许的并发实例的数量,这些并发的模型数量称之为一个instance。默认情况下,Triton是一个GPU上放一个模型,一次只推理一份数据。但通过设置模型的instance_group参数,可以对模型的并发实例数据量进行扩充。2.–model-control-mode=poll该参数用于启动模型热更新,当模型文件发生变化,或者新增版本时,程序先启动新的实例版本出来,在将旧版本或者实例卸载掉。

jack.li的博客 4379

P2P镜像分发:Harbor+Dragonfly优化k8s集群镜像拉取速度(二)

Dragonfly(蜻蜓)是一款开源的基于 P2P 的智能镜像和文件分发工具。它旨在提高大规模文件传输的效率和速率,最大限度地利用网络带宽。在应用分发、缓存分发、日志分发和镜像分发等领域被大规模使用。是由CNCF(云原生计算基金会)作为孵化级项目(阿里)。

渡江客涂鸦板 1464

3分钟掌握Dragonfly:终极P2P内容分发解决方案

在当今云原生时代,大规模文件分发已成为企业面临的重大挑战。传统下载方式在容器镜像、大文件传输时效率低下,带宽浪费严重。Dragonfly作为开源P2P内容分发系统,通过智能调度和分布式传输,将下载速度提升数倍,同时大幅降低源站压力。 ## 🔥 为什么选择Dragonfly? | 传统下载痛点 | Dragonfly解决方案 | |-------------|-----------------

gitblog_00941的博客 946

tritonserver学习之九:tritonserver grpc异步模式

gRPC的异步模式允许服务器同时处理多个客户端请求,而不会因等待某个请求的响应而阻塞其他请求的处理。这使得TritonServer能够充分利用系统资源,提高并发性能,从而能够更高效地处理大量的模型推理请求。:在异步模式下,服务器不会为每个请求创建单独的线程或进程,而是将请求放入队列中,并通过事件循环机制来处理这些请求。这减少了系统资源的开销,使得TritonServer能够在有限的资源下处理更多的请求。

liupenglove的专栏 3771

解决模型仓库带宽瓶颈问题!TorchServe 使用 Dragonfly 加速分发模型

Dragonfly GitHub:https://github.com/dragonflyoss/Dragonfly2本文主要解决在TorchServe模型拉取时,存在的中心化的模型仓库带宽瓶颈问题。当在 TorchServe 下载模型的时候,文件相对较大且会有并发下载模型的场景。这样很容易导致存储带宽被打满,从而引起下载过慢的情况,影响推理服务的使用。这种方式比较好的解决方案是使用 Drag...

金融级分布式架构 717

探秘Dragonfly2:下一代P2P加速神器

???? 探秘Dragonfly2:下一代P2P加速神器 在数字时代的大潮中,高效的数据传输成为了每个开发者和用户的共同追求。今天,我们带您深入了解一款开源的明星项目——Dragonfly2,它不仅是一个简单的进化,而是P2P分发领域的重大飞跃。 项目介绍 Dragonfly2,作为Dragonfly项目的新篇章,它是一套高效的内容分发系统,旨在解决大规模文件分发时的网络带宽利用率低、下载速度慢等问题。...

gitblog_00782的博客 725
上一篇: 活动参与指南|SOFA 六周年,Hello SOFA World
下一篇: SOFAStack 六周年明日启动!Hello SOFA World
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值