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

从零到一:基于 K3s 快速搭建本地化 kubeflow AI 机器学习平台

背景

Kubeflow 是一种开源的 Kubernetes 原生框架,可用于开发、管理和运行机器学习工作负载,支持诸如 PyTorch、TensorFlow 等众多优秀的机器学习框架,本文介绍如何在 Mac 上搭建本地化的 kubeflow 机器学习平台。
在这里插入图片描述

注意:本文以 deyloyKF 发行版作为主要安装对象,本地环境仅适用于开发测试使用,不可用于生产环境!

更多 kubeflow 发行版参考官网介绍:https://www.kubeflow.org/docs/started/installing-kubeflow/

基本环境:

OS:macos 13.1 (amd64)
DockerDesktop:v4.15.0

尽管 K3s 自身需要的资源不多,但是 kubeflow 套件组件众多,需要设置 Docker 的资源分配,避免安装过程中发生 Pod Pending.
Docker 资源建议设置:CPU 8 核,Memory 10G,磁盘 40G
在这里插入图片描述

安装部署步骤

1. 安装依赖的 CLI

brew install bash argocd jq k3d kubectl kustomize

2. 创建 Kubernetes 集群

为了尽可能降低资源消耗,这里使用 K3s 运行本地集群:

k3d cluster create "kubeflow" --image "rancher/k3s:v1.27.10-k3s2"

通过如下命令检查集群是否就绪:

kubectl get -A pods

正常的输出结果类似如下这样:

NAMESPACE     NAME                                     READY   STATUS      RESTARTS   AGE
kube-system   local-path-provisioner-957fdf8bc-cj9l5   1/1     Running     0          2m30s
kube-system   coredns-77ccd57875-xzzz4                 1/1     Running     0          2m30s
kube-system   metrics-server-648b5df564-gwnhq          1/1     Running     0          2m30s
kube-system   helm-install-traefik-crd-49l4k           0/1     Completed   0          2m31s
kube-system   helm-install-traefik-xrjtd               0/1     Completed   2          2m31s
kube-system   svclb-traefik-a79cf0ef-lj4td             2/2     Running     0          89s
kube-system   traefik-768bdcdcdd-mr8z8                 1/1     Running     0          89s

3. 部署 ArgoCD

ArgoCD 是工作流编排工具,可以帮助我们实现 Kubeflow 的自动化部署

git clone -b main https://github.com/deployKF/deployKF.git
cd deployKF/argocd-plugin
chmod +x ./install_argocd.sh
bash ./install_argocd.sh

通过如下命令检查 ArgoCD 是否就绪:

kubectl get pod -n argocd

正常的输出结果类似如下这样:

NAME                                                READY   STATUS    RESTARTS   AGE
argocd-redis-69f8795dbd-7v4nn                       1/1     Running   0          106s
argocd-applicationset-controller-7b9c4dfb77-7gsf2   1/1     Running   0          106s
argocd-notifications-controller-756764ddd5-jw92c    1/1     Running   0          106s
argocd-server-86f64667bc-7nt7d                      1/1     Running   0          105s
argocd-application-controller-0                     1/1     Running   0          105s
argocd-dex-server-9b5c6dccd-2p779                   1/1     Running   0          106s
argocd-repo-server-5b55578f7c-sfzf4                 2/2     Running   0          105s

4. 安装 kubeflow 套件

准备如下文件:deploykf-app-of-apps.yaml

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:name: deploykf-app-of-appsnamespace: argocdlabels:app.kubernetes.io/name: deploykf-app-of-appsapp.kubernetes.io/part-of: deploykf
spec:project: "default"source:## source git repo configuration##  - we use the 'deploykf/deploykf' repo so we can read its 'sample-values.yaml'##    file, but you may use any repo (even one with no files)##repoURL: "https://github.com/deployKF/deployKF.git"targetRevision: "v0.1.4"path: "."## plugin configuration##plugin:name: "deploykf"parameters:## the deployKF generator version##  - available versions: https://github.com/deployKF/deployKF/releases##- name: "source_version"string: "0.1.4"## paths to values files within the `repoURL` repository##  - the values in these files are merged, with later files taking precedence##  - we strongly recommend using 'sample-values.yaml' as the base of your values##    so you can easily upgrade to newer versions of deployKF##- name: "values_files"array:- "./sample-values.yaml"## a string containing the contents of a values file##  - this parameter allows defining values without needing to create a file in the repo##  - these values are merged with higher precedence than those defined in `values_files`##- name: "values"string: |#### This demonstrates how you might structure overrides for the 'sample-values.yaml' file.## For a more comprehensive example, see the 'sample-values-overrides.yaml' in the main repo.#### Notes:##  - YAML maps are RECURSIVELY merged across values files##  - YAML lists are REPLACED in their entirety across values files##  - Do NOT include empty/null sections, as this will remove ALL values from that section.##    To include a section without overriding any values, set it to an empty map: `{}`#### --------------------------------------------------------------------------------##                                      argocd## --------------------------------------------------------------------------------argocd:namespace: argocdproject: default## --------------------------------------------------------------------------------##                                    kubernetes## --------------------------------------------------------------------------------kubernetes:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------------------------------------------------##                              deploykf-dependencies## --------------------------------------------------------------------------------deploykf_dependencies:## --------------------------------------##             cert-manager## --------------------------------------cert_manager:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------##                 istio## --------------------------------------istio:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------##                kyverno## --------------------------------------kyverno:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------------------------------------------------##                                  deploykf-core## --------------------------------------------------------------------------------deploykf_core:## --------------------------------------##             deploykf-auth## --------------------------------------deploykf_auth:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------##        deploykf-istio-gateway## --------------------------------------deploykf_istio_gateway:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------##      deploykf-profiles-generator## --------------------------------------deploykf_profiles_generator:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------------------------------------------------##                                   deploykf-opt## --------------------------------------------------------------------------------deploykf_opt:## --------------------------------------##            deploykf-minio## --------------------------------------deploykf_minio:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------##            deploykf-mysql## --------------------------------------deploykf_mysql:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------------------------------------------------##                                  kubeflow-tools## --------------------------------------------------------------------------------kubeflow_tools:## --------------------------------------##                 katib## --------------------------------------katib:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------##               notebooks## --------------------------------------notebooks:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!## --------------------------------------##               pipelines## --------------------------------------pipelines:{} # <-- REMOVE THIS, IF YOU INCLUDE VALUES UNDER THIS SECTION!destination:server: "https://kubernetes.default.svc"namespace: "argocd"

执行如下命令,部署工作流:

kubectl apply -f ./deploykf-app-of-apps.yaml

通过 UI 界面查看 ArgoCD 状态:

kubectl port-forward --namespace "argocd" svc/argocd-server 8090:https

浏览器打开 https://localhost:8090/,用户名:admin,密码可通过如下命令获取:

echo $(kubectl -n argocd get secret/argocd-initial-admin-secret \-o jsonpath="{.data.password}" | base64 -d)

在这里插入图片描述
由于程序间存在依赖关系,可以通过如下脚本按序执行 Sync 操作:

git clone -b main https://github.com/deployKF/deployKF.git
cd deployKF/scripts
chmod +x ./sync_argocd_apps.sh
bash ./sync_argocd_apps.sh

该脚本是幂等的,失败后可反复执行直到部署成功,成功部署后的运行中 Pod 列表类似如下这样:

NAMESPACE                 NAME                                                 READY   STATUS    RESTARTS       AGE
argocd                    argocd-redis-69f8795dbd-x5wtv                        1/1     Running   5 (17m ago)    105m
argocd                    argocd-server-86f64667bc-zfm7m                       1/1     Running   4 (17m ago)    73m
argocd                    argocd-repo-server-5b55578f7c-x26zz                  2/2     Running   10 (17m ago)   91m
argocd                    argocd-notifications-controller-756764ddd5-2fqbr     1/1     Running   5 (17m ago)    89m
argocd                    argocd-dex-server-9b5c6dccd-bl86m                    1/1     Running   5 (17m ago)    91m
argocd                    argocd-application-controller-0                      1/1     Running   5 (17m ago)    91m
argocd                    argocd-applicationset-controller-7b9c4dfb77-hph2r    1/1     Running   5 (17m ago)    105m
cert-manager              cert-manager-c688c56f-w4jts                          1/1     Running   5 (17m ago)    109m
cert-manager              trust-manager-78766fd9bd-zd5zf                       1/1     Running   5 (17m ago)    90m
cert-manager              cert-manager-webhook-d45447457-q6cf8                 1/1     Running   6 (17m ago)    109m
cert-manager              cert-manager-cainjector-59d694bcc7-mrcvg             1/1     Running   6 (17m ago)    109m
deploykf-auth             oauth2-proxy-5fd9888b79-tpnrt                        2/2     Running   11 (16m ago)   73m
deploykf-auth             dex-68c8bf56b9-78d5g                                 2/2     Running   8 (17m ago)    73m
deploykf-dashboard        profile-controller-5575767c76-vshp2                  2/2     Running   8 (17m ago)    73m
deploykf-dashboard        kfam-api-75b64c9645-sjfcq                            2/2     Running   10 (17m ago)   98m
deploykf-dashboard        central-dashboard-6b5d9574dc-fmlt4                   2/2     Running   10 (17m ago)   98m
deploykf-istio-gateway    deploykf-gateway-6ddf8947cc-qz55g                    1/1     Running   5 (17m ago)    98m
deploykf-minio            deploykf-minio-568b877668-w2wct                      2/2     Running   5 (17m ago)    52m
deploykf-mysql            deploykf-mysql-0                                     1/1     Running   5 (17m ago)    109m
istio-system              istiod-7b9b6df595-jbztw                              1/1     Running   5 (17m ago)    91m
kube-system               svclb-deploykf-gateway-7f7cba3a-kkskn                3/3     Running   15 (17m ago)   100m
kube-system               metrics-server-648b5df564-gwnhq                      1/1     Running   9 (17m ago)    5h43m
kube-system               local-path-provisioner-957fdf8bc-cj9l5               1/1     Running   7 (17m ago)    5h43m
kube-system               coredns-77ccd57875-xzzz4                             1/1     Running   7 (17m ago)    5h43m
kube-system               traefik-768bdcdcdd-mr8z8                             1/1     Running   7 (17m ago)    5h42m
kube-system               svclb-traefik-a79cf0ef-6ksjm                         2/2     Running   10 (17m ago)   100m
kubeflow                  katib-controller-75858c4ddf-hwvkx                    1/1     Running   8 (17m ago)    95m
kubeflow                  ml-pipeline-ui-68b7f6586d-qtjp5                      2/2     Running   15 (17m ago)   94m
kubeflow                  ml-pipeline-persistenceagent-68bbd65f98-tsnqn        2/2     Running   10 (17m ago)   94m
kubeflow                  katib-ui-d4df8bdb6-2x75p                             2/2     Running   10 (17m ago)   95m
kubeflow                  ml-pipeline-6445d9fb77-dxgv4                         2/2     Running   24 (16m ago)   94m
kubeflow                  admission-webhook-deployment-789dc56fbf-z7cj8        1/1     Running   5 (17m ago)    94m
kubeflow                  metadata-writer-6f95b9588c-fmx4s                     2/2     Running   8 (17m ago)    73m
kubeflow                  notebook-controller-deployment-649cf9b976-vnvwd      2/2     Running   10 (17m ago)   95m
kubeflow                  training-operator-7cf5c66858-jf5sr                   1/1     Running   3 (17m ago)    43m
kubeflow                  tensorboards-web-app-deployment-778466f5f6-dmrks     2/2     Running   2 (17m ago)    43m
kubeflow                  tensorboard-controller-deployment-644f57dd7c-zlxnw   3/3     Running   24 (17m ago)   92m
kubeflow                  ml-pipeline-scheduledworkflow-578475988-kwz27        2/2     Running   10 (17m ago)   94m
kubeflow                  volumes-web-app-deployment-588d46bb75-95g6b          2/2     Running   2 (17m ago)    42m
kubeflow                  ml-pipeline-viewer-crd-6857ccc85c-zl895              2/2     Running   10 (17m ago)   94m
kubeflow                  metadata-grpc-deployment-566d54d578-wwj9n            2/2     Running   23 (16m ago)   94m
kubeflow                  ml-pipeline-visualizationserver-7b45b7fd56-s4pxh     2/2     Running   15 (17m ago)   94m
kubeflow                  cache-server-66d7586749-prmkq                        2/2     Running   10 (17m ago)   94m
kubeflow                  jupyter-web-app-deployment-9c8c779c-hcqvr            2/2     Running   15 (17m ago)   91m
kubeflow                  katib-db-manager-6998f5bdd8-lrs77                    1/1     Running   5 (17m ago)    95m
kubeflow                  metadata-envoy-deployment-b48db5966-542nh            1/1     Running   5 (17m ago)    94m
kubeflow-argo-workflows   argo-workflow-controller-79fc5c6895-2g26t            2/2     Running   10 (17m ago)   98m
kubeflow-argo-workflows   argo-server-6d97fb7649-lsfdw                         2/2     Running   5 (16m ago)    73m
kyverno                   kyverno-cleanup-controller-6cb4d5848-hh8nm           1/1     Running   5 (17m ago)    109m
kyverno                   kyverno-admission-controller-964c74c7d-frknb         1/1     Running   5 (17m ago)    109m
kyverno                   kyverno-background-controller-796f77c79f-nwhrs       1/1     Running   5 (17m ago)    109m
kyverno                   kyverno-reports-controller-6d6d98fc96-z7qjv          1/1     Running   5 (17m ago)    109m
kyverno                   kyverno-admission-controller-964c74c7d-hgtc2         1/1     Running   4 (17m ago)    109m
kyverno                   kyverno-admission-controller-964c74c7d-x744h         1/1     Running   5 (17m ago)    109m
team-1                    ml-pipeline-visualizationserver-677c86b748-nbrr5     2/2     Running   2 (17m ago)    73m
team-1                    ml-pipeline-ui-artifact-7749b4f5f6-ld7kl             2/2     Running   10 (17m ago)   94m
team-1-prod               ml-pipeline-visualizationserver-677c86b748-hqwsh     2/2     Running   2 (17m ago)    73m
team-1-prod               ml-pipeline-ui-artifact-7749b4f5f6-hl6gk             2/2     Running   10 (17m ago)   94m

同步完成后的 ArgoCD 界面(完成 20 个应用同步):
在这里插入图片描述

5. 访问控制台

执行端口转发:

kubectl port-forward \--namespace "deploykf-istio-gateway" \svc/deploykf-gateway 8080:http 8443:https

由于 Istio Gateway 基于 Host Header 区分访问的目标服务,因此需要配置本地 /etc/hosts 文件,追加如下内容:

127.0.0.1 deploykf.example.com
127.0.0.1 argo-server.deploykf.example.com
127.0.0.1 minio-api.deploykf.example.com
127.0.0.1 minio-console.deploykf.example.com

浏览器访问 https://deploykf.example.com:8443/

管理员:用户名 admin@example.com 密码 admin
用户 1: 用户名 user1@example.com 密码 user1
用户 2: 用户名 user2@example.com 密码 user2

在这里插入图片描述

6. 运行 Jupyter

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

更多功能持续探索中…

本文引用

https://www.deploykf.org/guides/local-quickstart/

相关文章:

从零到一:基于 K3s 快速搭建本地化 kubeflow AI 机器学习平台

背景 Kubeflow 是一种开源的 Kubernetes 原生框架&#xff0c;可用于开发、管理和运行机器学习工作负载&#xff0c;支持诸如 PyTorch、TensorFlow 等众多优秀的机器学习框架&#xff0c;本文介绍如何在 Mac 上搭建本地化的 kubeflow 机器学习平台。 注意&#xff1a;本文以 …...

kettle使用MD5加密增量获取接口数据

kettle使用MD5加密增量获取接口数据 场景介绍&#xff1a; 使用JavaScript组件进行MD5加密得到Http header&#xff0c;调用API接口增量获取接口数据&#xff0c;使用json input组件解析数据入库 案例适用范围&#xff1a; MD5加密可参考、增量过程可参考、调用API接口获取…...

PS入门|黑白色的图标怎么抠成透明背景

前言 抠图可以算是PS的入门必备操作&#xff0c;开始学习PS的小伙伴可以根据本帖子推荐一步步学习哦&#xff01;但切勿心急&#xff5e; 今天给小伙伴们带来&#xff1a;黑白色的图标抠图教程 抠图有很多种方法&#xff0c;但根据类型的不同&#xff0c;使用适当的方法很重…...

android 14 apexd分析(2)apexd 启动

1. class main进程一起启动&#xff0c; apexservice是他提供的binderservice&#xff0c;这也第二阶段的最主要的作用 /system/apex/apexd/apexd.rc?r3c8e8603c640fc41e0406ddcf981381803447cfb#1 1 service apexd /system/bin/apexd 2 interface aidl apexservice …...

微信小程序怎么制作?制作一个微信小程序需要多少钱?

随着移动互联网的快速发展&#xff0c;微信小程序已成为连接用户与服务的重要桥梁。它以其便捷性和易用性&#xff0c;为各类企业和个人提供了一个全新的展示和交易平台。那么&#xff0c;如何制作一个微信小程序&#xff1f;又需要投入多少资金呢&#xff1f;本文将为您提供全…...

WPS二次开发专题:如何获取应用签名SHA256值

作者持续关注WPS二次开发专题系列&#xff0c;持续为大家带来更多有价值的WPS开发技术细节&#xff0c;如果能够帮助到您&#xff0c;请帮忙来个一键三连&#xff0c;更多问题请联系我&#xff08;QQ:250325397&#xff09; 在申请WPS SDK授权版时候需要开发者提供应用包名和签…...

Flink SQL系列之:基于Flink SQL查询Topic中序列化的Debezium数据格式字段

Flink SQL系列之:基于Flink SQL查询Topic中序列化的Debezium数据格式字段 一、表结构二、查询Topic中表的数据三、反序列化字段一、表结构 CREATE TABLE IF NOT EXISTS record_rt (id decimal(20,0) COMMENT "主键",follow_entity_type <...

【WPF应用30】WPF中的ListBox控件详解

WPF&#xff08;Windows Presentation Foundation&#xff09;是.NET框架的一个组成部分&#xff0c;用于构建桌面应用程序的用户界面。ListBox是WPF中一个非常常用的控件&#xff0c;用于显示一系列的项&#xff0c;用户可以选择单个或多个项。 1.ListBox的基本概念 ListBox…...

Chatgpt掘金之旅—有爱AI商业实战篇(二)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、前言&#xff1a; 成为一名商业作者是一个蕴含着无限可能的职业选择。在当下数字化的时代&#xff0c;作家们有着众多的平台可以展示和推广自己的作品。无论您是对写书、文…...

AGI时代,LLM可以在AutoML哪些环节进行增强?

当下大模型技术发展如火如荼&#xff0c;颇有改变各行业和各领域的架势。那么对于AutoML来讲&#xff0c;LLM对其有哪些助力&#xff1f;对于这个问题&#xff0c;我们来问一问kimi chat&#xff0c;看看它怎么回答&#xff1f; 大型语言模型&#xff08;LLM&#xff09;可以在…...

算法练习—day1

title: 算法练习—day1 date: 2024-04-03 21:49:55 tags: 算法 categories:LeetCode typora-root-url: 算法练习—day1 网址&#xff1a;https://red568.github.io 704. 二分查找 题目&#xff1a; 题目分析&#xff1a; 左右指针分别为[left,right]&#xff0c;每次都取中…...

关于ansible的模块 ③

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 接《关于Ansible的模块①》和《关于Ansible的模块②》&#xff0c;继续学习ansible的user模块。 user模块可以增、删、改linux远…...

Spring Boot--文件上传和下载

文件上传和下载 前言文件上传1、以MultipartFile 接口流文件&#xff0c;流的名称需要和前台传过来的名称对应上2、获取到文件名称截取后缀3、为了放置文件名重复使用uuid来随机生成id后缀4、判断转存路径中是否有这个文件夹如果没有就创建5、将文件存储到转存的目录中 文件下载…...

hexo博客7:构建简单的多层安全防御体系

【hexo博客7】构建简单的多层安全防御体系 写在最前面理解全面安全策略的重要性防御常见的网络攻击1. SQL注入攻击2. 文件上传漏洞3. 跨站脚本攻击&#xff08;XSS&#xff09;4. 跨站请求伪造&#xff08;CSRF&#xff09;5. 目录遍历/本地文件包含&#xff08;LFI/RFI&#x…...

《捕鱼_ue4-5输出带技能的透明通道素材到AE步骤》

《捕鱼_ue4-5输出带技能的透明通道素材到AE步骤》 2022-05-17 11:06 先看下带透明的特效素材效果1、首先在项目设置里搜索alpha&#xff0c;在后期处理标签设置最后一项allow through tonemapper2、在插件管理器中&#xff0c;搜索movie render &#xff0c;加载movie render q…...

(免费分享)基于微信小程序自助停取车收费系统

本项目的开发和制作主要采用Java语言编写&#xff0c;SpringBoot作为项目的后端开发框架&#xff0c;vue作为前端的快速开发框架&#xff0c;主要基于ES5的语法&#xff0c;客户端采用微信小程序作为开发。Mysql8.0作为数据库的持久化存储。 获取完整源码&#xff1a; 大家点赞…...

Vue3_2024_7天【回顾上篇watch常见的后两种场景】___续

Vue3中监听多条数据的两种使用 1.watch【使用上一章写法&#xff0c;监听两个属性&#xff0c;然后执行相应操作…】 2.watchEffect【相对于使用watch&#xff0c;watchEffect默认页面初始加载&#xff0c;有点类似加配置&#xff1a;立即执行 immediate】 代码&#xff1a; …...

Gemini即将收费,GPT无需注册?GPT3.5白嫖和升级教程

&#x1f310;Gemini 即将开始收费 开发者“白嫖”的好日子到头了 - Gemini将开始收费&#xff0c;影响使用Google AI for Developers提供的Gemini API的用户。 - Gemini API将引入按量付费定价&#xff0c;需要注意新的服务条款。 - 用户需在5月2日之前停止使用Gemini API和Go…...

【协议篇:Http与Https】

1. Http 1.1 Http的定义 超文本传输协议&#xff08;Hypertext Transfer Protocol&#xff0c;HTTP&#xff09;是用于分布式、协作式和超媒体信息系统的应用层协议。它是互联网上最广泛应用的数据通信协议之一&#xff0c;尤其对于万维网&#xff08;WWW&#xff09;服务而言…...

WPS二次开发系列:WPS SDK初始化

作者持续关注WPS二次开发专题系列&#xff0c;持续为大家带来更多有价值的WPS开发技术细节&#xff0c;如果能够帮助到您&#xff0c;请帮忙来个一键三连&#xff0c;更多问题请联系我&#xff08;QQ:250325397&#xff09; 本文将详细介绍WPS SDK初始化&#xff0c;帮您能够更…...

EXCEL地理数据处理工具(地图任务)

版本号 作者 修订内容 发布日期 1.0 小O 更新至0705版 2022-4-28 1.1 小O 更新至0772版 2024年4月3日 一、概述 小O地图EXCEL插件版提供基于EXCEL表格进行地理数据处理、地图可视化、地图绘图等功能&#xff0c;地理工具是用户使用频率很高的功能模块。地理工具能…...

软件设计原则:迪米特法则

定义 迪米特法则&#xff08;Law of Demeter, LoD&#xff09;&#xff0c;又称最少知识原则&#xff0c;它指导我们在设计软件时&#xff0c;应当尽量减少对象之间的交互&#xff0c;一个对象应该对其他对象有尽可能少的了解。具体来说&#xff0c;一个对象应该只调用属于以下…...

MongoDB聚合运算符:$max

文章目录 语法使用空值和缺失值的处理数组操作数的处理 举例在$group阶段使用在$setWindowFields阶段使用在$project阶段使用 $max聚合运算符用于返回最大值。 $max对于不同的类型的值使用BSON的比较顺序。 $max可以用于下面的这些阶段&#xff1a; $addFields$bucket$bucket…...

神经网络学习笔记10——RNN、ELMo、Transformer、GPT、BERT

系列文章目录 参考博客1 参考博客2 文章目录 系列文章目录前言一、RNN1、简介2、模型结构3、RNN公式分析4、RNN的优缺点及优化1&#xff09;LSTM是RNN的优化结构2&#xff09;GRU是LSTM的简化结构 二、ELMo1、简介2、模型结构1&#xff09;输入2&#xff09;左右双向上下文信…...

Java23种设计模式

本文主要是对Java中一些常用的设计模式进行讲解 后期会进行不断的更新&#xff0c;欢迎浏览 23种设计模式 创建型模式&#xff0c;共五种&#xff1a;工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式。结构型模式&#xff0c;共七种&#xff1a;适配器模式、桥接…...

pieces of cake concerning torchtorchvision

1. version match torchvision的版本对应关系 2. utilize tqdm to present process bar lay a pbar from tqdm import tqdm pbar tqdm(unit"batch", filesys.stdout,totallen(self.training_dataloader)) #处理单位为batch pbar2 tqdm(range(20), descIt\s a t…...

如何在Python中处理JSON数据?

如何在Python中处理JSON数据&#xff1f; 在Python中处理JSON数据是一个常见的任务&#xff0c;因为JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;它易于人阅读和编写&#xff0c;同时也易于机器解析和生成。Python的内置库…...

站群服务器如何提高搜索引擎排名

站群服务器是一种专门为多个相关联的网站提供支持的服务器&#xff0c;旨在通过网站集合的形式提高搜索引擎排名和曝光度。那么站群服务器如何提高搜索引擎排名呢?Rak部落小编为您整理发布。 站群服务器提高搜索引擎排名的原理主要在于以下几个方面&#xff1a; - **提高网站…...

Redis安装-Docker

安装redis的docker容器 1、创建redis挂载目录 mkdir -p /liuchaoxu/redis/{data,conf}2、复制配置文件 在 /liuchaoxu/redis/conf 目录中创建文件 redis.conf&#xff0c;文件从 redis-6.2.7.tar.gz 中解压获取 修改默认配置(从上至下依次)&#xff1a; #bind 127.0.0.1 …...

day16-二叉树part03

104.二叉树的最大深度 &#xff08;优先掌握递归&#xff09; 根节点的高度就是二叉树的最大深度,后序遍历到叶子节点&#xff0c;对遍历高度取最小 class solution {/*** 递归法*/public int maxDepth(TreeNode root) {if (root null) {return 0;}int leftDepth maxDepth(ro…...

百度云 做网站/公司seo是什么级别

http://www.cnblogs.com/skychen1218/背景本公司是.Net项目&#xff0c;在.Net可选的MQ比较少&#xff0c;主要Kafka和RabbitMQ&#xff0c;RabbitMQ我也是使用多年了&#xff0c;最近的Kafka广告与流行度打得使我也是无法无视&#xff0c;因此也是花了点时间收集了资料做了些对…...

视频上传网站如何做/谷歌商店paypal下载官网

切换到第一个文本终端。在Linux下你可以有多达六个不同的终端。这个命令的意思是&#xff1a;“同时按住键和键&#xff0c;然后按键&#xff0c;再释放所有的键”。(n1..6)切换到第n个文本终端。(你也可以使用不是很经常用到的命令chvt n来实现&#xff0c;n指的是第n个文本终…...

做背景图获取网站/附子seo教程

【杠精学物理】第267篇原创文章。今天视频要讲的是一个高考中常见的问题——欧姆表的误差分析(当电源电动势降低&#xff0c;内阻增大时&#xff0c;测量值与真实值差异问题)。问题来源于前两天看到学生群里的讨论&#xff0c;感觉同学们越辩越糊涂。在此录制一个视频&#xff…...

网站建设与网页设计.../如何在百度搜索到自己的网站

【原创声明】 如果觉得文章不错&#xff0c;请转发、分享给您的朋友 地址 我会把十多年嵌入式开发中的项目实战经验进行总结、分享&#xff0c;相信不会让你失望的&#xff01; 转载&#xff1a;欢迎转载&#xff0c;但未经作者同意&#xff0c;必须保留此段声明&#xff0c;…...

网站备案地点/学seo如何入门

最近在看《深入理解计算机系统》&#xff0c;学习编程的一些基本的东西&#xff0c;还是觉得很有意思的。 今天看到了补码编码这一节。 最常见的有符号数的计算机表示方式就是补码(twos-complement)形式。在这个定义中&#xff0c;将字的最高有效为解释为负权(negative weight)…...

石家庄站建设费用多少/天津疫情最新消息

二叉树是n(n>0)个结点的有限集合&#xff0c;该集合或者为空集&#xff08;称为空二叉树&#xff09;&#xff0c;或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成。 还有一些右斜树 左斜树 满二叉树 完全二叉树之类的 这篇文章 记录 1.二叉树建立…...