华为昇腾310B初体验,OrangePi AIpro开发板使用测评

0、写在前面

很高兴收到官方的OrangePi AIpro开发板测试邀请,在过去的几年中,我在自己的博客写了一系列有关搭载嵌入式Linux系统的SBC(单板计算机)的博文,包括树莓派4系列、2K1000龙芯教育派、Radxa Rock5B、BeagleBone等。

OrangePi AIpro开发板最吸引我的地方是它使用了华为昇腾的处理器和支持华为昇腾AI技术路线。

开发板本身质感满满,整体尺寸和Radxa Rock5B一致,板上接口丰富,有type-c电源接口、2*HDMI 2.0、音频接口、USB Type-C 3.0(非全功能)、千兆网口、Wi-Fi5&BT4.2模块(RTL8821)、TF插槽、eMMC模块接口、M.2插槽、40PIN引脚等。

本次测评中,我会从软硬件出发体验OrangePi AIpro开发板,针对开发板的优点和缺点给出自己的观点。

1、使用SSH和VNC连接开发板

得益于官方系统已经内置了SSH和VNC服务,在接通网线、电源之后,可以通过路由器后台管理界面获取OrangePi AIpro开发板的IP,同一网段下的电脑即可使用SSH或VNC远程控制香橙派 AIpro开发板。

官方系统具有两个账号:root / Mind@123 , HwHiAiUser / Mind@123;密码相同。

可以使用MobaXterm、Putty等软件或终端进行SSH远程连接,SSH端口为22。

我使用RealVNC Viewer远程连接香橙派 AIpro开发板桌面,VNC Server为IP::5901,点击OK之后点击新建的连接输入密码:Mind@123 。

完成上图所示操作后,即可进入桌面,默认用户为ROOT,VNC会方便我们进行一些可视化操作。

注意:如果VNC登录后出现卡顿情况或者无法操作,可以重启服务

# 停止正在运行的服务,-kill后面的数字可以在VNC远程连接窗口左上角查看
(base) root@orangepiaipro:~# vncserver -kill :1
Killing Xtightvnc process ID 917# 重新启动刚才停止的服务
(base) root@orangepiaipro:~# vncserver :1New 'X' desktop is orangepiaipro:1Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/orangepiaipro:1.log

通过使用SSH和VNC两种方式,我们就可以把开发板放在合适的地方,通过自己的个人电脑进行后续的测试工作

2、使用SSD烧录Ubuntu系统镜像

虽然测试提供了安装好系统的32GB TF卡,但是可用空间已经比较小了,如下图所示,可用空间还剩下10几GB

出于空间和系统流畅性角度考虑,我将使用一块江波龙的64GB NVME协议 SSD固态硬盘作为系统盘。

开发板M.2接口在Linux系统中默认nvme协议,使用sata协议需要修改配置,在window系统中使用balenaEtcher进行烧录

把boot1拨到右端,boot2拨到左端后,上电成功进入系统,使用df -hlsblk命令查看系统空间和磁盘情况

❗注意❗

在开发板用户手册中说明:NVMe SSD目前测试了樊想、金士顿和三星的,只有三星的NVMe SSD能稳 定运行Linux系统。

我这里使用的江波龙64GB Nvme SSD只是做个人测试使用。

3、OrangePi AIpro开发板功耗

这里我把TF和SSD区分开进行测试,功耗测试仪器为合宙IoT Power功耗测试仪。

3.1 使用TF的情况

刚上电开机时,功耗比较高,检测到的最高值在11.7W左右。

进入桌面后,在没有其他操作的情况下,功耗约为7.7W-8W,使用网页应用功耗在10.5W左右。

3.2 使用SSD的情况

刚上电开机时,功耗峰值在13W左右。

进入桌面后,在没有其他操作的情况下,功耗约为8.6W,使用网页应用功耗在11W左右。

3.3 分析

首先是开机时的功耗比较高,个人猜测是风扇的原因,上电到系统启动完成的这段时间风扇的转速很快,其他时间风扇转速比较平缓,以TF卡系统为例,风扇高速转动时和待机缓转时,总功耗差距4W左右。

其次是当打开软件,系统负载增加时,功耗也会有所增加;

最后根据固态硬盘额定功率的不同,开发板的总功耗也会相应增加,以我使用的江波龙64GB NVME SSD来说,对比TF卡,在上述三种场景下功耗增加分别在11.11%、11.68%、4.8%左右。

4、UnixBench跑分

UnixBench是一个广泛使用的基准测试工具,用于评估类Unix操作系统(如Linux、BSD等)的性能。它通过运行一系列的测试来测量系统的各种性能指标,包括CPU、内存、文件系统、图形和多任务处理能力。UnixBench的测试结果可以帮助系统管理员和开发人员了解其系统的性能水平,并与其他系统进行比较。

# 下载阿里云版本unixbench
wget https://github.com/aliyun/byte-unixbench/releases/download/v5.1.6/UnixBench-5.1.6.tar.gztar -zxvf UnixBench-5.1.6.tar.gzcd UnixBench-5.1.6/UnixBench
./Run

分数仅供参考:单核776.5分,多核1641.1分,跑分结果截图如下:

在相同条件下,对比使用RK3588的Rock 5B开发板,如下图所示。昇腾310B是4核且默认情况还会分配一个AI CPU,RK3588是8核,比较多核性能意义不大,就我本次测试来说,单核两者相差约23.9%。

5、使用USB摄像头和安装OpenCV

这里使用的是UVC免驱USB摄像头,接入摄像头

# 检测外部摄像头设备的命令
ls /dev/video*

官方手册上说/dev/video1是来采集metadata的,那我们插入的设备为:/dev/video0

使用fswebcam软件,在安装fswebcam时发现系统已经安装过了

# 在/home/HwHiAiUser目录下生成一张当前摄像头拍摄到的实时照片
fswebcam -d /dev/video0 --no-banner -r 1920x1080 -S 10 /home/HwHiAiUser/image.jpg

在我执行pip3 list时,发现系统已经安装了numpy 1.22.4,opencv-python-headless 4.9.0.80,opencv-python-headless是一个不带图形界面的版本的OpenCV,它可以用来进行图像处理和计算机视觉任务,但是不能用来显示图像或视频,这对于运行在无图形界面的服务器上的应用程序很方便,因为它可以节省资源。在Python程序中使用方式也是import cv2

下面我提供一个测试程序,处理视频流并保存为文件。

# -*- coding: utf-8 -*-
import cv2
import time# 打开摄像头
cap = cv2.VideoCapture(0)if not cap.isOpened():print("Cannot open camera")exit()# 定义视频编码器和输出文件
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))# 获取当前时间
start_time = time.time()while True:# 读取视频帧ret, frame = cap.read()if not ret:print("Cannot read frame")break# 写入视频帧out.write(frame)# 检查是否时间已经超过5秒if time.time() - start_time > 5:print("Recorded 5 seconds, exiting")break# 释放摄像头和视频写入器
cap.release()
out.release()

sudo apt-get install mpv安装mpv,mpv output.avi进行视频播放。

如果你需要使用OpenCV的GUI功能,你应该安装完整的opencv-python包,使用pip install opencv-python进行安装。

6、使用开发板点亮RGB灯

OrangePi AIpro开发板具有40个Pin接口引脚,如下图所示。我将使用12、13、15三个GPIO引脚和14 GND 引脚进行简单的测试点亮RGB灯。

引脚

功能

GPIO

GPIO序号

12

GPIO7_03

227

13

GPIO1_06

38

14

GND

15

GPIO2_15

79

在系统中预装了gpio_operate工具可以读取、设置GPIO的输入输出方向和置0置1

# 切换root用户
su 
# 获取12、13、15引脚GPIO方向,0:输入方向,1:输出方向
gpio_operate get_direction 7 3
gpio_operate get_direction 1 6
gpio_operate get_direction 2 15

设置12、13、15引脚GPIO方向为输出方向

gpio_operate set_direction 7 3 1
gpio_operate set_direction 1 6 1
gpio_operate set_direction 2 15 1

查询12、13、15引脚GPIO 电平,如下图所示,都为低电平。

gpio_operate get_value 7 3
gpio_operate get_value 1 6
gpio_operate get_value 2 15

R接12引脚、G接13引脚、B接15引脚,GND接14 GND。

# 设置12、13、15引脚GPIO 为高电平
gpio_operate set_value 7 3 1
gpio_operate set_value 1 6 1
gpio_operate set_value 2 15 1# 设置12、13、15引脚GPIO 为低电平
gpio_operate set_value 7 3 0
gpio_operate set_value 1 6 0
gpio_operate set_value 2 15 0

编写shell脚本测试,给脚本添加可执行权限:chmod +x gpio_RGB.sh

#!/bin/bash# 数组包含需要执行的命令
commands=("gpio_operate set_value 7 3 1""gpio_operate set_value 7 3 0""gpio_operate set_value 1 6 1""gpio_operate set_value 1 6 0""gpio_operate set_value 2 15 1""gpio_operate set_value 2 15 0"
)# 无限循环执行命令,每隔0.5秒执行一条,ctrl+c结束执行
while true
dofor cmd in "${commands[@]}"doeval $cmdsleep 0.5done
done

7、使用Docker并配置开发板为 MQTT服务器

通过命令查询,发现系统已经默认安装了docker,并且有一个测试的hello-world镜像。

(base) root@orangepiaipro:/home/HwHiAiUser# docker --version
Docker version 25.0.3, build 4debf41
(base) root@orangepiaipro:/home/HwHiAiUser# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    ee301c921b8a   12 months ago   9.14kB

下载Docker 图形化web管理 portainer

#下载 Docker 图形化界面 portainer
sudo docker pull portainer/portainer
#创建 portainer 容器
sudo docker volume create portainer_data
#运行 portainer
sudo docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

运行之后在浏览器中输入IP:9000 进入界面。首次访问需要设定登录密码

配置EMQX 开源版,EMQX (Erlang/Enterprise/Elastic MQTT Broker)是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。

# 获取 Docker 镜像
docker pull emqx/emqx:5.6.1
# 启动 Docker 容器
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.6.1

用IP:18083 进入EMQX服务器后台,默认账号:admin ,默认密码:public

测试代码-发布消息

import paho.mqtt.client as mqtt
import time#   链接回调
def on_connect(client, userdata, flags, rc):print ("链接")print("Connected with result code: " + str(rc))#   消息内容回调
def on_message(client, userdata, msg):print("消息内容")print(msg.topic + " " + str(msg.payload))#   订阅回调
def on_subscribe(client, userdata, mid, granted_qos):print("订阅")print("On Subscribed: qos = %d" % granted_qos)pass#   取消订阅回调
def on_unsubscribe(client, userdata, mid, granted_qos):print("取消订阅")print("On unSubscribed: qos = %d" % granted_qos)pass#   发布消息回调
def on_publish(client, userdata, mid):print("发布消息")print("On onPublish: qos = %d" % mid)pass#   断开链接回调
def on_disconnect(client, userdata, rc):print("断开链接")print("Unexpected disconnection rc = " + str(rc))passclient = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.on_publish = on_publish
client.on_disconnect = on_disconnect
client.on_unsubscribe = on_unsubscribe
client.on_subscribe = on_subscribe
# keepalive 心跳间隔,单位是秒,如果 broker 和 client 在这段时间内没有任何通讯,client 会给 broker 发送一个 ping 消息
# retain  如果设为 Ture ,这条消息会被设为保留消息client.connect('192.168.5.220', 1883, 60)  # 60为keepalive的时间间隔
while True:client.publish(topic='mqtt', payload='OrangePi AiPro', qos=0, retain=False)time.sleep(5)

测试代码-接收消息

import paho.mqtt.client as mqtt#   链接回调
def on_connect(client, userdata, flags, rc):print("Connected with result code: " + str(rc))
#   消息信息回调
def on_message(client, userdata, msg):print(msg.topic + " " + str(msg.payload))#   订阅回调
def on_subscribe(client, userdata, mid, granted_qos):print("On Subscribed: qos = %d" % granted_qos)pass#   取消订阅回调
def on_unsubscribe(client, userdata, mid):print("取消订阅")print("On unSubscribed: qos = %d" % mid)pass#   发布消息回调
def on_publish(client, userdata, mid):print("发布消息")print("On onPublish: qos = %d" % mid)pass#   断开链接回调
def on_disconnect(client, userdata, rc):print("断开链接")print("Unexpected disconnection rc = " + str(rc))passclient = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.on_publish = on_publish
client.on_disconnect = on_disconnect
client.on_unsubscribe = on_unsubscribe
client.on_subscribe = on_subscribeclient.connect('192.168.5.220', 1883, 60)  # 60为keepalive的时间间隔
#当 qos>0 时,发送消息队列的最大值,默认是 0 ,表示无限制。当队列满时,旧消息会丢弃。
client.subscribe('mqtt', qos=0)
#loop_forever()  =>  该函数是保持永久连接, 阻塞式,可结合多线程或多进程的方式使用
client.loop_forever()  # 保持连接

经过测试,我们的部署是没有问题的

8、昇腾310B独特的机制:AI CPU和Control CPU切换

npu-smi是昇腾AI处理器的系统管理工具,类似于NVIDIA GPU的 nvidia-smi,通过npu-smi info命令我们可以查看到AI处理器名称为310B4(8T算力版本)。

根据开发手册所说:OrangePi AiPro使用的昇腾SOC总共有4个CPU,这4个CPU既可以设置为control CPU,也可以设置为AICPU。默认情况下,control CPU和AI CPU的分配数量为 3:1。

# 查看control CPU和AI CPU的分配数量
(base) root@orangepiaipro:/home/HwHiAiUser# npu-smi info -t cpu-num-cfg -i 0 -c 0Current AI CPU number          : 1Current control CPU number     : 3Current data CPU number        : 0# 查询AI CPU占用率
(base) root@orangepiaipro:/home/HwHiAiUser# npu-smi info -t usages -i 0 -c 0Memory Capacity(MB)            : 7545Memory Usage Rate(%)           : 27Hugepages Total(page)          : 15Hugepages Usage Rate(%)        : 100Aicore Usage Rate(%)           : 0Aicpu Usage Rate(%)            : 0Ctrlcpu Usage Rate(%)          : 0Memory Bandwidth Usage Rate(%) : 1# 查询芯片的算力档位
(base) root@orangepiaipro:/home/HwHiAiUser# npu-smi info -t nve-level -i 0 -c 0nve level                      : 8T_1.0GHz# 设置AI CPU为0,最多可以设置3个AI CPU(3:1:0,最后的0为data CPU,固定配置为 0)        
sudo npu-smi set -t cpu-num-cfg -i 0 -c 0 -v 0:4:0

查阅资料,我发现昇腾310有8核心版本和4核心版本,OrangePi AiPro搭载的是4核心版本。可以根据我们的实际需求,灵活切换control CPU和AI CPU的分配数量,最多可以设置3个AI CPU。

9、AI应用样例体验

OrangePi AiPro开发板系统提供了9个AI应用样例,我们可以使用Jupyter notebook快速体验。

9个AI样例分别是目标检测、文字识别、目标分类、图像曝光增强、卡通图像生成、蛋白质分类评估、细胞图像分割、人像分割与背景替换和语音识别。

我选取其中1个进行体验。启动Jupyter Lab,如下图所示:

复制地址在开发板浏览器中打开

点击左侧的01 yolov5后,双击打开main.ipynb。

首先就是对act工具转换模型为om模型的介绍,本展现了模型推理过程的代码。

点击红框内的箭头运行案例,得到一段识别后的视频,通过修改infer_mode可以选择图片、视频或摄像头。

infer_imageinfer_frame_with_vis函数中添加时间记录,打印处理的时间

import timedef infer_image(img_path, model, class_names, cfg):"""图片推理"""# 记录开始时间start_time = time.time()# 图片载入image = cv2.imread(img_path)# 数据预处理img, scale_ratio, pad_size = preprocess_image(image, cfg)# 模型推理output = model.infer([img])[0]output = torch.tensor(output)# 非极大值抑制后处理boxout = nms(output, conf_thres=cfg["conf_thres"], iou_thres=cfg["iou_thres"])pred_all = boxout[0].numpy()# 预测坐标转换scale_coords(cfg['input_shape'], pred_all[:, :4], image.shape, ratio_pad=(scale_ratio, pad_size))# 图片预测结果可视化draw_prediction(pred_all, image, class_names)# 记录结束时间end_time = time.time()# 计算并输出推理时间inference_time = end_time - start_timeprint(f"Inference time: {inference_time:.4f} seconds")def infer_frame_with_vis(image, model, labels_dict, cfg, bgr2rgb=True):# 记录开始时间start_time = time.time()# 数据预处理img, scale_ratio, pad_size = preprocess_image(image, cfg, bgr2rgb)# 模型推理output = model.infer([img])[0]output = torch.tensor(output)# 非极大值抑制后处理boxout = nms(output, conf_thres=cfg["conf_thres"], iou_thres=cfg["iou_thres"])pred_all = boxout[0].numpy()# 预测坐标转换scale_coords(cfg['input_shape'], pred_all[:, :4], image.shape, ratio_pad=(scale_ratio, pad_size))# 图片预测结果可视化img_vis = draw_bbox(pred_all, image, (0, 255, 0), 2, labels_dict)# 记录结束时间end_time = time.time()# 计算并输出推理时间inference_time = end_time - start_timeprint(f"Inference time for frame: {inference_time:.4f} seconds")return img_vis

此时打印了视频推理每一帧所用的时间,大约0.05S,每秒19fps左右

10、写在最后

在这几天的体验OrangePi AiPro开发板的过程中,上手体验非常好,优点如下:

  • 官方提供的系统镜像已经做了很多预先的配置工作,可以更快上手。如默认开启的ssh、vnc服务等,内置的docker、conda、torch_npu、MindSpore等等,这对新手来说就少了很多配环境的折磨,可以更快的进入到AI应用的学习和实践。

  • 对于发布半年左右的开发板,提供的开发资料非常详细。用户手册写的非常详细了,对 Linux 内核源码包和Linux 镜像编译脚本都做了详细的说明。

  • 支持昇腾技术路线。昇腾从硬件底层到软件平台应用有一整套技术解决方案,有昇腾处理器、异构计算机构CANN、深度学习框架MindSpore等,OrangePi AiPro不单单是一个“树莓派”,更是帮助开发者去实践昇腾AI技术的高性价比载体。

  • OrangePi AiPro开发板背靠昇腾社区和香橙派社群,技术支持更多。昇腾社区提问帖子基本都有跟帖,香橙派目前在国内的口碑也非常不错,产品线和支持都很给力,在遇到问题的时候,更容易解决问题。

OrangePi AiPro开发板搭载的昇腾310B4芯片也给我很多惊喜,可以根据实际需求,灵活切换control CPU和AI CPU的分配数量。在最近,更是可以通过固件更新的方式,将频率从1.0Ghz提高到1.6Ghz,实现单核性能50%以上的提升。

但是在测评中,也有一些问题和相关的建议:

  • 在当前系统使用中,HDMI0不能输出音频信号,HDMI1接口不能输出桌面视频信号。希望能在下个版本的系统中完成适配。

  • 提供了一个USB3.0 Type-c接口,如果能在后续硬件版本中实现全功能Type-c功能就更好了。

  • 目前的开发者手册虽然很详细,但是希望能增加一些昇腾相关内容,建议增加npu-smi工具使用和CANN、MindSpore相关内容。

总结一下,OrangePi AiPro是一块优秀的SBC,同时它的价格也会使它成为入门昇腾技术路线的最佳选择之一,非常适合学生学习和竞赛使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/17172.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

攒粒是什么?怎么用攒粒赚钱?

攒粒简介 攒粒的前身是91问问,隶属于上海道道永泉市场调查有限公司,是一家专业的全球在线调研服务公司,也是是国内排名前列的社区调查之一,10年在线调研,600万会员亲身体验,提供网络调查、市场调查、问卷调…

KT6368A蓝牙芯片AT命令会被透传出去,指令对为什么会被透传出去

一、简介 KT6368A再被连接之后,AT命令会被透传出去。被透传的这组AT命令是符合文档要求,不应被透传,实际却经常被透传。并且可以每次都复现 详细描述 有问题部分的串口数据监控结果如下:其中41 54 2B 42 4D 46 30 41 46 42 43 3…

从零自制docker-15-【实现 mydocker run -d 支持后台运行容器】

文章目录 实现目的莫名奇妙的问题对之前upper层出现root补充对run某些命令出现找不到文件或目录的原因代码效果 实现目的 docker run -d时容器在后台运行,而不会进入命令行交互形式 首先是需要添加-d选项然后设置当添加-d选项时候主进程不会等待子进程&#xff0c…

Rocky Linux 9.4 正式版发布 - RHEL 100% 1:1 兼容免费发行版

Rocky Linux 9.4 正式版发布 - RHEL 100% 1:1 兼容免费发行版 Rocky Linux 由 CentOS 项目的创始人 Gregory Kurtzer 领导 请访问原文链接:Rocky Linux 9.4 正式版发布 - RHEL 100% 1:1 兼容免费发行版,查看最新版。原创作品,转载请保留出处…

GPT-4o: 未来的智能助手

GPT-4o: 未来的智能助手 在这个信息爆炸的时代,人工智能(AI)已经成为我们生活中不可或缺的一部分。作为OpenAI最新推出的语言模型,GPT-4o不仅继承了前几代模型的优点,还在多个方面进行了显著的提升。本文将带你深入了解…

DreamerV3阅读笔记

DreamerV3 文章希望解决的一个挑战是用固定的hyperparameter来同时处理不同domain的任务。文章发现,通过结合KL balancing 和free bits可以使得world model learn without tuning(是指上面这件事,即不需要对不同任务改变hyperparameter&#…

2024年电工杯高校数学建模竞赛(B题) 建模解析| 大学生平衡膳食食谱的优化设计

问题重述及方法概述 问题1:膳食食谱的营养分析评价及调整 数学方法:线性规划模型、营养素评价模型、比较分析 可视化数据图:营养素含量表、营养素摄入量对比图、营养素缺乏情况图 问题2:基于附件3的日平衡膳食食谱的优化设计 数…

KingbaseES数据库物理备份还原sys_rman

数据库版本:KingbaseES V008R006C008B0014 简介 sys_rman 是 KingbaseES 数据库中重要的物理备份还原工具,支持不同类型的全量备份、差异备份、增量备份,保证数据库在遇到故障时及时使用 sys_rman 来恢复到数据库先前状态。 文章目录如下 1.…

揭秘爬虫技术:从请求到存储的全方位解析

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、爬虫初探:请求与响应 二、数据解析:从混乱中提炼价值 三、数据…

Megatron-LM源码系列(八): Context Parallel并行

1. Context Parallel并行原理介绍 megatron中的context并行(简称CP)与sequence并行(简称SP)不同点在于,SP只针对Layernorm和Dropout输出的activation在sequence维度上进行切分,CP则是对所有的input输入和所有的输出activation在sequence维度上进行切分&…

M00238-固定翼无人机集群飞行仿真平台MATLAB完整代码含效果

一个小型无人机集群仿真演示平台,使用matlab和simulink搭建。 给出的例子是5架的,当然如果你愿意花时间,也可以把它扩展到10架,20架甚至更多。 输入:5架飞机的规划路径 输出:每架无人机每个时刻的13个状态量…

Docker环境安装并使用Elasticsearch

1、拉取es docker pull elasticsearch:7.10.12、查看镜像 docker images3、启动es docker run -d --name esearch -p 9200:9200 -p 9300:9300 elasticsearch:7.10.14、如果启动ES时出现一下问题 Unable to find image docker.elastic.co/elasticsearch/elasticsearch:7.10.…

python max_min标准化

python max_min标准化 max_min标准化sklearn实现max_min标准化手动实现max_min标准化 max_min标准化 Max-Min标准化(也称为归一化或Min-Max Scaling)是一种将数据缩放到特定范围(通常是0到1)的标准化方法。这种方法通过线性变换将…

用PhpStudy在本地电脑搭建WordPress网站教程(2024版)

对新手来说,明白了建站3要素后,如果直接购买域名、空间去建站,因为不熟练,反复测试主题、框架、插件等费时费力,等网站建成可能要两三个月,白白损失这段时间的建站费用。那么新手怎么建测试网站来练手呢&am…

06.部署jpress

安装mariadb数据 yum -y install mariadb-server #启动并设置开启自启动 systemctl start mariadb.service systemctl enable mariadb.service数据库准备 [rootweb01 ~]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id…

OpenAI 再次刷新认知边界:GPT-4 颠覆语音助手市场,流畅度直逼真人互动?

前言 近日,美国人工智能研究公司 OpenAI 发布了其最新旗舰模型 GPT-4o,这一革命性的进展不仅标志着人工智能领域的新突破,更预示着即将步入一个全新的交互时代?GPT-4o 的发布,对于我们来说,意味着人工智能…

冯喜运:5.28黄金今日走势分析及黄金原油操作策略

【黄金消息面分析】:周一(5月27日)美盘时段,现货黄金止跌回稳,缓慢回升,盘中最高触及2358.4美元。美国商品期货交易委员会(Commodity Futures Trading Commission)的最新交易数据显示,对黄金的投…

空压机的热回收原理介绍

空压机运行时会产生大量的压缩热,通常这部分能量通过机组的风冷或水冷系统释放到大气当中。压缩机的热回收是持续降低空气系统损耗,提高客户生产力的必要手段。 余热回收的节能技术目前研究很多,但大多只针对喷油螺杆式空压机的油路改造而言…

Eureka全面解析:轻松实现高效服务发现与治理!

一、引言 Eureka是Netflix开源的一款服务发现框架,它提供了一种高效的服务注册和发现机制,适用于大规模分布式系统。本文将详细介绍Eureka的相关知识。 二、Eureka简介 Eureka是一个基于REST的服务发现框架,它提供了一种简单的服务注册和发…

如果创办Google

本文是一篇演讲稿,来自于《黑客与画家》一书的作者保罗*格雷厄姆,被称为硅谷创业之父。这是他为14至15岁的孩子们做的一次演讲,内容是关于如果他们将来想创立一家创业公司,现在应该做些什么。很多学校认为应该向学生们传授一些有关…