当前位置: 首页 > news >正文

Azure 机器学习 - 有关为 Azure 机器学习配置 Kubernetes 群集的参考

目录

    • 受支持的 Kubernetes 版本和区域
    • 建议的资源计划
    • ARO 或 OCP 群集的先决条件
      • 禁用安全增强型 Linux (SELinux)
      • ARO 和 OCP 的特权设置
    • 收集的日志详细信息
    • Azure 机器学习作业与自定义数据存储连接
    • 支持的 Azure 机器学习排斥和容许
      • 最佳实践
    • 通过 HTTP 或 HTTPS 将其他入口控制器与 Azure 机器学习扩展集成
      • 先决条件
      • 通过 HTTP 公开服务
      • 通过 HTTPS 公开服务
    • 使用 ARM 模板部署扩展
    • AzuremML 扩展发行说明

本文包含有关[使用 Azure 机器学习配置 Kubernetes]的参考信息。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

file

受支持的 Kubernetes 版本和区域

  • 安装 Azure 机器学习扩展的 Kubernetes 群集的版本支持窗口为“N-2”,这与 Azure Kubernetes 服务 (AKS) 版本支持策略一致,其中“N”是 Azure Kubernetes 的最新 GA 次要版本服务。

    • 例如,如果 AKS 今天发布了 1.20.a,则 1.20.a、1.20.b、1.19.c、1.19.d、1.18.e 和 1.18.f 均受支持。

    • 如果客户在运行不受支持的 Kubernetes 版本,则在请求群集支持时,系统会要求他们升级。 运行不受支持的 Kubernetes 版本的群集未涵盖在 Azure 机器学习扩展支持策略中。

  • Azure 机器学习扩展区域可用性:

    • Azure 机器学习扩展可以部署到已启用 Azure Arc 的 Kubernetes 区域支持中列出的受支持区域中的 AKS 或已启用 Azure Arc 的 Kubernetes。

建议的资源计划

部署 Azure 机器学习扩展时,某些相关服务将部署到适用于 Azure 机器学习的 Kubernetes 群集。 群集中“相关服务及其资源使用情况”如下表所示:

部署/Daemonset副本 #培训推理CPU 请求(m)CPU 限制(m)内存请求(Mi)内存限制(Mi)
metrics-controller-manager11010020300
prometheus-operator1100400128512
prometheus110010005124096
kube-state-metrics11010032256
gateway1505002562048
fluent-bit每个节点 1 个10200100300
inference-operator-controller-manager1空值10010001281024
amlarc-identity-controller1空值20010002001024
amlarc-identity-proxy1空值20010002001024
azureml-ingress-nginx-controller1空值100100064512
azureml-fe-v21(出于测试目的)

3(用于生产目的) | | 空值 | 900 | 2000 | 800 | 1200 |
| online-deployment | 每个部署 1 个 | User-created | 空值 | | | | |
| online-deployment/identity-sidecar | 每个部署 1 个 | | 空值 | 10 | 50 | 100 | 100 |
| aml-operator | 1 | 不适用 | | 20 | 1020 | 124 | 2168 |
| volcano-admission | 1 | 不适用 | | 10 | 100 | 64 | 256 |
| volcano-controller | 1 | 不适用 | | 50 | 500 | 128 | 512 |
| volcano-schedular | 1 | 不适用 | | 50 | 500 | 128 | 512 |

除你自己的部署/Pod 外,“总最低系统资源要求”如下:

场景已启用推理已启用训练CPU 请求(m)CPU 限制(m)内存请求(Mi)内存限制(Mi)节点计数推荐的最低 VM 大小相应的 AKS VM SKU
测试空值178083002440122961 个节点2 个 vCPU、7 GiB 内存、6400 IOPS 和 1500Mbps BWDS2v2
测试空值41044201492109601 个节点2 个 vCPU、7 GiB 内存、6400 IOPS 和 1500Mbps BWDS2v2
测试1910104202884157441 个节点4 个 vCPU、14 GiB 内存、12800 IOPS 和 1500Mbps BWDS3v2
生产空值3600127004240152963 个节点4 个 vCPU、14 GiB 内存、12800 IOPS 和 1500Mbps BWDS3v2
生产空值41044201492109601 个节点8 个 vCPU、28GiB 内存、25600 IOP、6000Mbps BWDS4v2
生产3730148204684187443 个节点4 个 vCPU、14 GiB 内存、12800 IOPS 和 1500Mbps BWDS4v2

ARO 或 OCP 群集的先决条件

禁用安全增强型 Linux (SELinux)

启用了 SELinux 的计算机不支持 Azure 机器学习数据集(用于 Azure 机器学习训练作业的 SDK v1 功能)。 因此,需要对所有辅助角色禁用 selinux 才能使用 Azure 机器学习数据集。

ARO 和 OCP 的特权设置

对于 ARO 或 OCP 群集上的 Azure 机器学习扩展部署,授予对 Azure 机器学习服务帐户的特权访问,运行 oc edit scc privileged 命令,并在“users:”下添加以下服务帐户:

  • system:serviceaccount:azure-arc:azure-arc-kube-aad-proxy-sa
  • system:serviceaccount:azureml:{EXTENSION-NAME}-kube-state-metrics
  • system:serviceaccount:azureml:prom-admission
  • system:serviceaccount:azureml:default
  • system:serviceaccount:azureml:prom-operator
  • system:serviceaccount:azureml:load-amlarc-selinux-policy-sa
  • system:serviceaccount:azureml:azureml-fe-v2
  • system:serviceaccount:azureml:prom-prometheus
  • system:serviceaccount:{KUBERNETES-COMPUTE-NAMESPACE}:default
  • system:serviceaccount:azureml:azureml-ingress-nginx
  • system:serviceaccount:azureml:azureml-ingress-nginx-admission

备注

  • {EXTENSION-NAME}:它是由 az k8s-extension create --name CLI 命令指定的扩展名。
  • {KUBERNETES-COMPUTE-NAMESPACE}:它是将计算附加到 Azure 机器学习工作区时指定的 Kubernetes 计算的命名空间。 如果 KUBERNETES-COMPUTE-NAMESPACEdefault,则跳过配置 system:serviceaccount:{KUBERNETES-COMPUTE-NAMESPACE}:default

收集的日志详细信息

关于群集中 Azure 机器学习工作负载的某些日志将通过扩展组件(例如状态、指标、生命周期等)收集。以下列表显示了收集的所有日志详细信息,包括收集的日志类型以及它们发送到或存储的位置。

Pod资源说明详细日志信息
amlarc-identity-controller通过托管标识请求和续订 Azure Blob/Azure 容器注册表令牌。仅在安装扩展时设置了 enableInference=true 时使用。 它包含有关获取终结点标识以使用 Azure 机器学习服务进行身份验证的状态的跟踪日志。
amlarc-identity-proxy通过托管标识请求和续订 Azure Blob/Azure 容器注册表令牌。仅在安装扩展时设置了 enableInference=true 时使用。 它包含有关获取群集标识以使用 Azure 机器学习服务进行身份验证的状态的跟踪日志。
aml-operator管理训练作业的生命周期。日志包含群集中的 Azure 机器学习训练作业 Pod 状态。
azureml-fe-v2用于将传入推理请求路由到已部署服务的前端组件。请求级别的访问日志,包括请求 ID、开始时间、响应代码、错误详细信息和请求延迟的持续时间。 用于服务元数据更改、服务运行状态等的跟踪日志,用于调试目的。
gateway网关用于来回通信和发送数据。有关从 Azure 机器学习服务到群集的请求的跟踪日志。
运行状况检查日志包含 azureml 命名空间资源(Azure 机器学习扩展)状态,以诊断导致扩展无法运行的原因。
inference-operator-controller-manager管理推理终结点的生命周期。日志包含群集中的 Azure 机器学习推理终结点和部署 Pod 状态。
metrics-controller-manager管理 Prometheus 的配置。有关上传训练作业状态的跟踪日志,以及有关 CPU 利用率和内存利用率的推理部署指标。
中继服务器中继服务器仅在连接 Arc 的群集中是必需的,并且不会安装在 AKS 群集中。中继服务器与 Azure 中继配合使用,以便与云服务通信。 日志包含来自 Azure 中继的请求级别信息。

Azure 机器学习作业与自定义数据存储连接

永久性卷 (PV) 和永久性卷声明 (PVC) 是 Kubernetes 概念,允许用户提供和使用各种存储资源。

  1. 创建 PV,以 NFS 为例,
apiVersion: v1
kind: PersistentVolume
metadata:name: nfs-pv 
spec:capacity:storage: 1Gi accessModes:- ReadWriteMany persistentVolumeReclaimPolicy: RetainstorageClassName: ""nfs: path: /share/nfsserver: 20.98.110.84 readOnly: false
  1. 使用 ML 工作负载在同一 Kubernetes 命名空间中创建 PVC。 在 metadata 中,必须添加标签 ml.azure.com/pvc: "true" 以供 Azure 机器学习识别,并添加注释 ml.azure.com/mountpath: <mount path> 以设置装载路径。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: nfs-pvc  namespace: defaultlabels:ml.azure.com/pvc: "true"annotations:ml.azure.com/mountpath: "/mnt/nfs"
spec:storageClassName: ""accessModes:- ReadWriteMany      resources:requests:storage: 1Gi

重要

  • 只有命令作业/组件、hyperdrive 作业/组件和批处理部署支持来自 PVC 的自定义数据存储。 > * 实时联机终结点、AutoML 作业和 PRS 作业不支持来自 PVC 的自定义数据存储。
  • 此外,只有与 PVC 位于同一 Kubernetes 命名空间中的 Pod 才会装载到卷上。 数据科学家能够访问作业中 PVC 批注中指定的 mount path。 AutoML 作业和 Prs 作业将无法访问 PVC。

支持的 Azure 机器学习排斥和容许

污点和容忍是 Kubernetes 中的概念,它们协同工作,以确保不会将 Pod 安排到不适当的节点。

与 Azure 机器学习(包括 AKS 和 Arc Kubernetes 群集)集成的 Kubernetes 群集现在支持特定的 Azure 机器学习排斥和容许,允许用户在 Azure 机器学习专用节点上添加特定的 Azure 机器学习排斥,以防止非 Azure 机器学习工作负载安排到这些专用节点上。

我们仅支持在节点上放置 amlarc 特定的排斥,定义如下:

排斥密钥效果说明
amlarc 整体ml.azure.com/amlarctrueNoScheduleNoExecutePreferNoSchedule所有 Azure 机器学习工作负载(包括扩展系统服务 Pod 和机器学习工作负载 Pod)都会容忍此 amlarc overall 污点。
amlarc 系统ml.azure.com/amlarc-systemtrueNoScheduleNoExecutePreferNoSchedule只有 Azure 机器学习扩展系统服务 Pod 才会容忍此 amlarc system 污点。
amlarc 工作负载ml.azure.com/amlarc-workloadtrueNoScheduleNoExecutePreferNoSchedule只有机器学习工作负载 Pod 才容许此 amlarc workload 排斥。
amlarc 资源组ml.azure.com/resource-group<资源组名称>NoScheduleNoExecutePreferNoSchedule只有从特定资源组创建的机器学习工作负载 Pod 才容许此 amlarc resource group 排斥。
amlarc 工作区ml.azure.com/workspace<工作区名称>NoScheduleNoExecutePreferNoSchedule只有从特定工作区创建的机器学习工作负载 Pod 才容许此 amlarc workspace 排斥。
amlarc 计算ml.azure.com/compute<计算名称>NoScheduleNoExecutePreferNoSchedule只有使用特定计算目标创建的机器学习工作负载 Pod 才容许此 amlarc compute 排斥。

提示

  1. 对于Azure Kubernetes 服务 (AKS),可以遵循有关 Azure Kubernetes 服务 (AKS) 中的高级计划程序功能的最佳做法中的示例,将污点应用到节点池。
  2. 对于 Arc Kubernetes 群集(例如本地 Kubernetes 群集),可以使用 kubectl taint 命令向节点添加污点。 有关更多示例,请参阅 Kubernetes 文档。

最佳实践

根据 Azure 机器学习专用节点的计划要求,可以添加“多个特定于 amlarc 的污点”,以限制 Azure 机器学习工作负载可在节点上运行的内容。 我们列出了有关使用 amlarc 排斥的最佳做法:

  • 若要防止非 Azure 机器学习工作负载在 Azure 机器学习专用节点/节点池上运行,只需向这些节点添加 aml overall 污点即可。
  • 要防止非系统 Pod 在 Azure 机器学习专用节点/节点池上运行,必须添加以下污点:
    • amlarc overall 排斥
    • amlarc system 排斥
  • 要防止非 ml 工作负载在 Azure 机器学习专用节点/节点池上运行,必须添加以下污点:
    • amlarc overall 排斥
    • amlarc workloads 排斥
  • 要防止不是从工作区 X 创建的工作负载在 Azure 机器学习专用节点/节点池上运行,必须添加以下污点:
    • amlarc overall 排斥
    • amlarc resource group (has this <workspace X>) 排斥
    • amlarc <workspace X> 排斥
  • 要防止不是由计算目标 X 创建的工作负载在 Azure 机器学习专用节点/节点池上运行,必须添加以下污点:
    • amlarc overall 排斥
    • amlarc resource group (has this <workspace X>) 排斥
    • amlarc workspace (has this <compute X>) 排斥
    • amlarc <compute X> 排斥

通过 HTTP 或 HTTPS 将其他入口控制器与 Azure 机器学习扩展集成

除了默认的 Azure 机器学习推理负载均衡器 azureml-fe 外,还可以通过 HTTP 或 HTTPS 将其他负载均衡器与 Azure 机器学习扩展集成。

本教程介绍如何集成 Nginx 入口控制器或 Azure 应用程序网关。

先决条件

  • 使用 inferenceRouterServiceType=ClusterIPallowInsecureConnections=True部署 Azure 机器学习扩展,以便 Nginx 入口控制器可以自行处理 TLS 终止,而不是当通过 HTTPS 公开服务时将其移交给 azureml-fe。
  • 若要与 Nginx 入口控制器集成,需要使用 Nginx 入口控制器设置 Kubernetes 群集。
    • 创建基本控制器:如果是从头开始,请参阅这些说明。
  • 若要与 Azure 应用程序网关集成,需要使用 Azure 应用程序网关入口控制器设置 Kubernetes 群集。
    • 绿地部署:如果是从头开始,请参阅这些说明。
    • 棕地部署:如果有现有的 AKS 群集和应用程序网关,请参阅这些说明。
  • 若要在此应用程序上使用 HTTPS,则需 x509 证书及其私钥。

通过 HTTP 公开服务

为了公开 azureml-fe,我们将使用以下入口资源:

# Nginx Ingress Controller example
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: azureml-fenamespace: azureml
spec:ingressClassName: nginxrules:- http:paths:- path: /backend:service:name: azureml-feport:number: 80pathType: Prefix

此入口会将 azureml-fe 服务和所选部署作为 Nginx 入口控制器的默认后端公开。

# Azure Application Gateway example
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: azureml-fenamespace: azureml
spec:ingressClassName: azure-application-gatewayrules:- http:paths:- path: /backend:service:name: azureml-feport:number: 80pathType: Prefix

此入口会将 azureml-fe 服务和所选部署作为应用程序网关的默认后端公开。

请将以上入口资源另存为 ing-azureml-fe.yaml

  1. 通过运行以下命令部署 ing-azureml-fe.yaml

    kubectl apply -f ing-azureml-fe.yaml
    
  2. 检查入口控制器的日志以了解部署状态。

  3. azureml-fe 应用程序现在应该可用。 可以通过访问以下位置进行检查:

    • Nginx 入口控制器:Nginx 入口控制器的公共 LoadBalancer 地址
    • Azure 应用程序网关:应用程序网关的公共地址。
  4. 创建推理作业并调用。

    备注

    调用前,将 scoring_uri 中的 IP 替换为 Nginx 入口控制器的公共 LoadBalancer 地址。

通过 HTTPS 公开服务

  1. 在部署入口之前,需创建 Kubernetes 机密来托管证书和私钥。 可通过运行以下命令来创建 Kubernetes 机密

    kubectl create secret tls <ingress-secret-name> -n azureml --key <path-to-key> --cert <path-to-cert>
    
  2. 定义以下入口。 在入口的 secretName 节中指定机密的名称。

    # Nginx Ingress Controller example
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:name: azureml-fenamespace: azureml
    spec:ingressClassName: nginxtls:- hosts:- <domain>secretName: <ingress-secret-name>rules:- host: <domain>http:paths:- path: /backend:service:name: azureml-feport:number: 80pathType: Prefix
    
    # Azure Application Gateway example
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:name: azureml-fenamespace: azureml
    spec:ingressClassName: azure-application-gatewaytls:- hosts:- <domain>secretName: <ingress-secret-name>rules:- host: <domain>http:paths:- path: /backend:service:name: azureml-feport:number: 80pathType: Prefix
    

    备注

    将上述入口资源中的 <domain><ingress-secret-name> 替换为指向 Nginx 入口控制器/应用程序网关的 LoadBalancer 的域和你的机密名称。 将以上入口资源存储在名为 ing-azureml-fe-tls.yaml 的文件中。

  3. 通过运行部署 ing-azureml-fe-tls.yaml

    kubectl apply -f ing-azureml-fe-tls.yaml
    
  4. 检查入口控制器的日志以了解部署状态。

  5. 现在,azureml-fe 应用程序在 HTTPS 上可用。 可以通过访问 Nginx 入口控制器的公共 LoadBalancer 地址来检查这一点。

  6. 创建推理作业并调用。

    备注

    调用前,将 scoring_uri 中的协议和 IP 替换为指向 Nginx 入口控制器或应用程序网关的 LoadBalancer 的 https 和域。

使用 ARM 模板部署扩展

可以使用 ARM 模板部署托管群集上的扩展。 可从 deployextension.json 中找到示例模板,其中包含演示参数文件 deployextension.parameters.json

若要使用示例部署模板,请使用正确的值编辑参数文件,然后运行以下命令:

az deployment group create --name <ARM deployment name> --resource-group <resource group name> --template-file deployextension.json --parameters deployextension.parameters.json

有关如何使用 ARM 模板的详细信息,请参阅 ARM 模板文档

AzuremML 扩展发行说明

Date版本版本说明
2023 年 10 月 11 日1.1.35修复易受攻击的映像。 bug 修复。
2023 年 8 月 25 日1.1.34修复易受攻击的映像。 返回更详细的标识错误。 bug 修复。
2023 年 7 月 18 日1.1.29添加新标识运算符错误。 bug 修复。
2023 年 6 月 4 日1.1.28改进自动缩放程序以处理多个节点池。 bug 修复。
2023 年 4 月 18 日1.1.26Bug 修复和漏洞修复。
2023 年 3 月 27 日1.1.25添加 Azure 机器学习作业限制。 SSH 设置失败时,训练作业会快速失败。 将 Prometheus 抓取间隔缩短到 30 秒。 改进用于推理的错误消息。 修复易受攻击的映像。
2023 年 3 月 7 日1.1.23更改默认实例类型以使用 2Gi 内存。 更新 scoring-fe 的指标配置,其中添加 15 秒的 scrape_interval。 为 mdc 挎斗添加资源规范。 修复易受攻击的映像。 bug 修复。
2023 年 2 月 14 日1.1.21Bug 修复。
2023 年 2 月 7 日1.1.19改进用于推理的错误返回消息。 更新默认实例类型以使用 2Gi 内存限制。 对 Pod 运行状况、资源配额、Kubernetes 版本和扩展版本执行群集运行状况检查。 Bug 修复
2022 年 12 月 27 日1.1.17将 Fluent-bit 从 DaemonSet 移至挎斗。 添加 MDC 支持。 优化错误消息。 支持群集模式(windows、linux)作业。 Bug 修复
2022 年 11 月 29 日1.1.16通过新的 CRD 添加实例类型验证。 支持容错。 缩短 SVC 名称。 工作负载核心小时数。 多个 bug 修复和改进。
2022 年 9 月 13 日1.1.10Bug 修复。
2022 年 8 月 29 日1.1.9改进了运行状况检查逻辑。 Bug 修复。
2022 年 6 月 23 日1.1.6Bug 修复。
2022 年 6 月 15 日1.1.5更新了训练,以使用新的公共运行时运行作业。 删除了 AKS 扩展的 Azure 中继使用情况。 从扩展中删除了服务总线使用情况。 更新了安全上下文使用情况。 已将推理 azureml-fe 更新为 v2。 已更新为使用 Volcano 作为训练作业计划程序。 Bug 修复。
2021 年 10 月 14 日1.0.37在 AMLArc 训练作业中支持 PV/PVC 卷装载。
2021 年 9 月 16 日1.0.29新区域可用:美国西部、美国中部、美国中北部、韩国中部。 作业队列可扩展性。 请参阅“Azure 机器学习工作区工作室”中的作业队列详细信息。 自动终止策略。 支持 ScriptRunConfig 中的 max_run_duration_seconds。 如果运行时间超过设置值,系统会尝试自动取消运行。 群集自动缩放支持的性能改进。 从本地容器注册表部署 Arc 代理和 ML 扩展。
2021 年 8 月 24 日1.0.28作业 YAML 支持计算实例类型。 将托管标识分配给 AMLArc 计算。
2021 年 8 月 10 日1.0.20新的 Kubernetes 分发支持,K3S - 轻型 Kubernetes。 将 Azure 机器学习扩展部署到 AKS 群集,而无需通过 Azure Arc 进行连接。自动化机器学习 (AutoML) 需要通过 Python SDK。 使用 2.0 CLI 将 Kubernetes 群集附加到 Azure 机器学习工作区。 优化 Azure 机器学习扩展组件 CPU/内存资源利用率。
2021 年 7 月 2 日1.0.13新的 Kubernetes 分发支持、OpenShift Kubernetes 和 GKE(Google Kubernetes 引擎)。 自动缩放支持。 如果用户管理的 Kubernetes 群集启用了自动缩放,则群集将根据活动运行和部署的量自动横向扩展或缩减。 作业启动器的性能改进,大大缩短了作业执行时间。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

相关文章:

Azure 机器学习 - 有关为 Azure 机器学习配置 Kubernetes 群集的参考

目录 受支持的 Kubernetes 版本和区域建议的资源计划ARO 或 OCP 群集的先决条件禁用安全增强型 Linux (SELinux)ARO 和 OCP 的特权设置 收集的日志详细信息Azure 机器学习作业与自定义数据存储连接支持的 Azure 机器学习排斥和容许最佳实践 通过 HTTP 或 HTTPS 将其他入口控制器…...

使用微信小程序控制蓝牙小车(微信小程序端)

目录 使用接口界面效果界面设计界面逻辑设计 使用接口 微信小程序官方开发文档 接口说明wx.openBluetoothAdapter初始化蓝牙模块wx.closeBluetoothAdapter关闭蓝牙模块(调用该方法将断开所有已建立的连接并释放系统资源)wx.startBluetoothDevicesDiscovery开始搜寻附近的蓝牙…...

【react hook】react hook组件中,在forEach中使用async/awati进行异步操作,为什么后面代码没有等待直接同步运行了呢?

这是因为 forEach 方法不会等待 async/await 异步操作的完成。forEach 方法是一种同步的方法&#xff0c;它会在每个迭代内部同步执行一个回调函数。当遇到 await 时&#xff0c;会立即暂停执行&#xff0c;但是 forEach 方法不会等待回调函数中的 await 异步操作完成&#xff…...

高斯过程回归 | GPR高斯过程回归

高斯过程回归(Gaussian Process Regression, GPR)是一种强大的非参数回归方法,它通过假设数据是从一个高斯过程中生成的来预测新的数据点。 高斯过程是一种定义在连续输入空间上的随机过程,其中任何有限集合的观测值都呈多变量高斯分布。 实现GPR的Python代码import numpy …...

[autojs]逍遥模拟器和vscode对接

第一步&#xff1a;启动autojs服务 第二步&#xff1a;去cmd查看ip地址&#xff0c;输入ipconfig 第三步&#xff1a;打开逍遥模拟器中的sutojs-左上角- 连接电脑&#xff0c;然后输入WLAN或者其他ip也行&#xff0c;根据自己电脑实际情况确认 此时vscode显示连接成功。我们写…...

Docker 安装与优化

一、安装Docker 1、关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 02、安装依赖包 yum -y install yum-utils device-mapper-persistent-data lvm2#解释 yum-utils #提供了yum-config-manager工具 device mapper #是linux内核中支持逻辑卷…...

Wix使用velo添加Google ads tag并在form表单提交时向谷歌发送事件

往head里加代码时&#xff0c;不能看谷歌的代码&#xff0c;要看wix的代码&#xff0c;不然必定踩坑 https://support.wix.com/en/article/tracking-google-ads-conversions-using-wix-custom-code 这里的代码才对&#xff0c;因为wix搞了个velo&#xff0c;这个velo很傻x&am…...

Centos配置邮件发送

在CentOS Linux上配置邮件发送 在这个指南中&#xff0c;我们将讨论如何配置CentOS Linux系统以通过外部邮件服务器发送电子邮件&#xff0c;使用自己的邮件账户进行发送。 第一步&#xff1a;开启SMTP授权码 首先&#xff0c;我们以QQ邮箱为例&#xff0c;需要开启SMTP授权…...

Ubuntu系统使用apt-get管理软件工具

记录一下使用Ubuntu系统的apt-get管理软件工具 先查看一下系统的版本&#xff0c;可以看到这里使用的是Ubuntu20.04版本&#xff0c;版本代号focal rootmyw:~# uname -a Linux myw 5.4.0-70-generic #78-Ubuntu SMP Fri Mar 19 13:29:52 UTC 2021 x86_64 x86_64 x86_64 GNU/L…...

带你走进Cflow (三)·控制符号类型分析

目录 ​编辑 1、控制符号类型 1.1 语法类 1.2 符号别名 1.3 GCC 初始化 1、控制符号类型 有人也许注意到了输出中奇怪的现象&#xff1a;函数_exit 丢失了&#xff0c;虽然它在源文件中被printdir 调用了两次。这是因为默认情况下 cflow 忽略所有的一下划线开头的符号…...

FPGA UDP RGMII 千兆以太网(3)ODDR

1 xilinx原语 在 7 系列 FPGA 中实现 RGMII 接口需要借助 5 种原语,分别是:IDDR、ODDR、IDELAYE2、ODELAYE2(A7 中没有)、IDELAYCTRL。其中,IDDR和ODDR分别是输入和输出的双边沿寄存器,位于IOB中。IDELAYE2和ODELAYE2,分别用于控制 IO 口输入和输出延时。同时,IDELAYE2 …...

OSG交互:选中场景模型并高亮显示

1、目的 可以在osg视图中选中指定模型实体,并高亮显示。共分为两种,一种鼠标点选,一种框选。 2、鼠标点选 2.1 功能说明 生成两组对象,一组cow对象可以被选中,另一组robot不能被选中;点击cow对象被选中高亮,点击robot被选中不高亮;点击空白处,弹出“select nothing!…...

农业大棚智能化改造升级与远程视频监管方案,助力智慧农业建设发展

一、需求分析 随着现代化技术的发展&#xff0c;农业大棚的智慧化也成为当前备受关注的智慧农业发展手段。利用先进的信息化手段来对农业大棚进行管理&#xff0c;采集和掌握作物的生长状况、作业监督、生态环境等信息数据&#xff0c;实现精准操作、精细管理&#xff0c;远程…...

P6入门:项目初始化2-项目详情之日期Date

前言 使用项目详细信息查看和编辑有关所选项目的详细信息&#xff0c;在项目创建完成后&#xff0c;初始化项目是一项非常重要的工作&#xff0c;涉及需要设置的内容包括项目名&#xff0c;ID,责任人&#xff0c;日历&#xff0c;预算&#xff0c;资金&#xff0c;分类码等等&…...

【ubuntu20.04】win10安装ubuntu20.04双系统

win10安装ubuntu20.04双系统&#xff1a; 【ubuntu20.04】win10安装ubuntu20.04双系统:https://www.bilibili.com/video/BV11k4y1k7Li/?spm_id_from333.999.0.0&vd_source66a67b8a0b3c4e03915bf8b3a6ff9a74 ubuntu与windows双系统时间同步&#xff1a; windows认为&…...

使用ffmpeg 压缩视频

我有一批1080p的视频,在网上播放占用空间太大,需要进行压缩以后再上传,下面是记录一下ffmpeg命令的使用情况 原视频大小:288mb --压缩加修改分辨率 640p ffmpeg -y -i C4995.mp4 -vcodec libx264 -crf 18 -s vga C4995\C4995_2.MP4 -y: 强制覆盖 -i :输入文件 -vcodec lib…...

C# , .netWebApi, WPF 用特性实现类似Java 的Ioc 自动装配@Autowired

写C# 一直很羡慕Java的@Autowired 自动装配. 因为C# 必须手动在Ioc里注册 之前用接口实现了自动注册IOC, 总是觉得美中不足, 毕竟没有真正实现用注解/特性实现自动注入, 这次我们来实现一个用特性注入Ioc的扩展方法. namespace MyCode.BLL.Service.Ioc {/// <summary>/…...

3DMAX汽车绑定动画模拟插件MadCar疯狂汽车使用教程

3DMAX汽车绑定动画模拟插件MadCar疯狂的汽车&#xff0c;用于通过模拟控制来快速装配轮式车辆及其动画。这个新版本允许装配任何数量的车轮的车辆&#xff0c;以及包括摩托车在内的任何相互布置。还支持任意数量的拖车。 每个车轮和悬架都有简化的行为设置以及微调&#xff0c…...

比较PID控制和神经网络控制在机器人臂上的应用

机器人臂是自动化领域中常见的机器人形式&#xff0c;其精确控制对于实现复杂任务具有重要意义。在机器人臂的控制中&#xff0c;PID控制和神经网络控制是两种常用的控制方法。本文将比较PID控制和神经网络控制在机器人臂控制方面的应用&#xff0c;包括控制原理、优缺点以及在…...

ubuntu16.04 交叉编译 mbedtls

在为客户交叉编译项目时需要依赖 mbedtls&#xff0c; 客户的机器是 arm64 的 ubuntu 16.04&#xff0c; 交叉编译过程中遇到几个问题。 首先&#xff0c; mbedtls 需要依赖 python, 在 cmake 的过程中&#xff0c; 如果不是使用系统默认的 cmake 可能会导致&#xff0c;mbedt…...

如何高效使用fre:ac音频转换器:从入门到精通的完整指南

如何高效使用fre:ac音频转换器&#xff1a;从入门到精通的完整指南 【免费下载链接】freac The fre:ac audio converter project 项目地址: https://gitcode.com/gh_mirrors/fr/freac fre:ac音频转换器是一款功能强大、完全免费的开源工具&#xff0c;专为音乐爱好者和专…...

「码动四季·开源同行」python语言:字符编码

一、理解字符编码理论储备知识 1、字符编码说明 字符编码这个知识点其实只是涉及到一行代码&#xff0c;但是它非常重要&#xff0c;据不完全统计&#xff0c;现在软件30%的损失都是由于乱码问题所导致的&#xff0c;这个问题是最容易被大家所忽视的&#xff0c;因为使用的时候…...

告别商业EDA?在Ubuntu 22.04上配置开源EDA工具链:Yosys + GTKWave + iverilog

开源EDA工具链实战&#xff1a;在Ubuntu 22.04上构建YosysGTKWaveiverilog全流程环境 当我在大学实验室第一次接触FPGA开发时&#xff0c;商业EDA软件动辄数十万的授权费用让我震惊。直到发现开源EDA工具链&#xff0c;才意识到原来芯片设计可以如此"平民化"。本文将…...

当n和L大到1e18时,别再暴力模拟了!详解‘3437 melon’吃瓜问题的O(1)公式推导与边界条件处理

极端数据规模下的算法优化&#xff1a;从暴力模拟到O(1)公式推导 在算法竞赛和高性能编程中&#xff0c;我们常常会遇到数据规模极其庞大的问题。当输入参数达到1e18量级时&#xff0c;传统的暴力模拟或动态规划方法往往无法在合理时间内完成计算。本文将以经典的"3437 me…...

企业网站设计|网站建设公司哪家好?2026十家网站制作公司深度盘点

在数字经济与产业融合持续推进的当下&#xff0c;企业网站不再是单一的线上展示窗口&#xff0c;而是承载品牌形象、业务衔接、用户交互的核心数字化载体。2026 年&#xff0c;国内网站建设行业逐步完成从模板化搭建到定制化开发的转型&#xff0c;多终端适配、数据安全防护、多…...

自然语言处理词向量:WordVec与BERT预训练模型对比

自然语言处理&#xff08;NLP&#xff09;中&#xff0c;词向量技术是理解语义的核心工具。从早期的Word2Vec到如今的BERT预训练模型&#xff0c;词向量的发展推动了机器对语言的理解能力。本文将对比这两种代表性技术&#xff0c;分析其差异与应用场景&#xff0c;帮助读者理解…...

告别DETR训练慢!手把手教你用Deformable DETR在COCO数据集上10倍速收敛

10倍速训练秘籍&#xff1a;Deformable DETR在COCO数据集上的实战优化指南 当DETR首次亮相时&#xff0c;其端到端的目标检测架构确实令人耳目一新。但很快&#xff0c;实践者们就发现了一个棘手的问题&#xff1a;训练周期长得令人难以忍受。想象一下&#xff0c;在COCO数据集…...

APK Installer:Windows上的安卓应用安装终极指南

APK Installer&#xff1a;Windows上的安卓应用安装终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了在Windows电脑上运行安卓模拟器的繁琐体验&am…...

驱动业务闭环的底层逻辑:为什么说 AI Agent 是企业数字化转型的必选项?

站在2026年这个“AI Agent落地元年”的时间节点回看&#xff0c; 企业数字化转型的叙事逻辑已经发生了根本性逆转。 如果说2023年是“大模型元年”&#xff0c;企业还在为Prompt调优而兴奋&#xff0c; 那么2025年到2026年的跨越&#xff0c;则标志着AI从“会聊天”进化到了“能…...

LCD9648点阵屏驱动避坑指南:从字库取模到SPI时序调试的常见问题

LCD9648点阵屏驱动开发实战&#xff1a;从硬件调试到显示优化的完整解决方案 在嵌入式设备开发中&#xff0c;点阵屏作为人机交互的重要窗口&#xff0c;其稳定可靠的显示效果直接影响用户体验。LCD9648作为一款常见的96x64像素单色点阵屏&#xff0c;凭借其高性价比和简单接口…...