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

开源大模型ChatGLM2-6B 1. 租一台GPU服务器测试下

0. 环境

租用了1台GPU服务器,系统 ubuntu20,GeForce RTX 3090 24G。过程略。本人测试了ai-galaxy的,今天发现网友也有推荐autodl的。

(GPU服务器已经关闭,因此这些信息已经失效)
SSH地址:*
端口:16116

SSH账户:root
密码:*

内网: 3389 , 外网:16114

VNC地址: *
端口:16115

VNC用户名:root
密码:*

硬件需求,这是ChatGLM-6B的,应该和ChatGLM2-6B相当。
量化等级    最低 GPU 显存
FP16(无量化)    13 GB
INT8    10 GB
INT4    6 GB

1. 测试gpu

nvidia-smi
(base) root@ubuntuserver:~# nvidia-smi
Fri Sep  8 09:58:25 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.54       Driver Version: 510.54       CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:00:07.0 Off |                  N/A |
| 38%   42C    P0    62W / 250W |      0MiB / 11264MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
(base) root@ubuntuserver:~#


2. 下载仓库

git clone https://github.com/THUDM/ChatGLM2-6B
cd ChatGLM2-6B

服务器也无法下载,需要浏览器download as zip 通过winscp拷贝上去

3. 升级cuda

查看显卡驱动版本要求:
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

发现cuda 11.8需要 >=450.80.02。已经满足。

执行指令更新cuda

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sh cuda_11.8.0_520.61.05_linux.run


-> 输入 accept
-> 取消勾选 Driver
-> 点击 install

export PATH=$PATH:/usr/local/cuda-11.8/bin
nvcc --version

4. 源码编译方式升级python3

4.1 openssl(Python3.10 requires a OpenSSL 1.1.1 or newer)

wget https://www.openssl.org/source/openssl-1.1.1s.tar.gz
tar -zxf openssl-1.1.1s.tar.gz && \
cd openssl-1.1.1s/ && \
./config -fPIC --prefix=/usr/include/openssl enable-shared && \
make -j8
make install

4.2 获取源码


wget https://www.python.org/ftp/python/3.10.10/Python-3.10.10.tgz
or
wget https://registry.npmmirror.com/-/binary/python/3.10.10/Python-3.10.10.tgz

4.3 安装编译python的依赖

apt update && \
apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev

4.4 解压并配置

tar -xf Python-3.10.10.tgz && \
cd Python-3.10.10 && \
./configure --prefix=/usr/local/python310  --with-openssl-rpath=auto  --with-openssl=/usr/include/openssl  OPENSSL_LDFLAGS=-L/usr/include/openssl   OPENSSL_LIBS=-l/usr/include/openssl/ssl OPENSSL_INCLUDES=-I/usr/include/openssl

4.5 编译与安装


make -j8
make install

4.6 建立软链接

ln -s /usr/local/python310/bin/python3.10  /usr/bin/python3.10

5. 再次操作ChatGLM2-6B


5.1 使用 pip 安装依赖

# 首先单独安装cuda版本的torch
python3.10 -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118# 再安装仓库依赖
python3.10 -m pip install --upgrade pip  -i https://pypi.tuna.tsinghua.edu.cn/simple
python3.10 -m pip install -r requirements.txt

问题:网速慢,加上国内软件源
python3.10 -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

问题:ERROR: Could not find a version that satisfies the requirement streamlit>=1.24.0 
ubuntu20内的python3.9太旧了,不兼容。

验证torch是否带有cuda

import torch
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print(device)

5.2 准备模型


# 这里将下载的模型文件放到了本地的 chatglm-6b 目录下

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git clone https://huggingface.co/THUDM/chatglm2-6b $PWD/chatglm2-6b

还是网速太慢

另外一种办法:

mkdir -p THUDM/ && cd THUDM/
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm2-6b


下载ChatGLM2作者上传到清华网盘的模型文件
https://cloud.tsinghua.edu.cn/d/674208019e314311ab5c/?p=%2Fchatglm2-6b&mode=list
并覆盖到THUDM/chatglm2-6b

先前以为用wget可以下载,结果下来的文件是一样大的,造成推理失败。
win10 逐一校验文件SHA256,需要和https://huggingface.co/THUDM/chatglm2-6b中Git LFS Details的匹配。

C:\Users\qjfen\Downloads\chatglm2-6b>certutil -hashfile pytorch_model-00001-of-00007.bin SHA256
SHA256 的 pytorch_model-00001-of-00007.bin 哈希:
cdf1bf57d519abe11043e9121314e76bc0934993e649a9e438a4b0894f4e6ee8
CertUtil: -hashfile 命令成功完成。
C:\Users\qjfen\Downloads\chatglm2-6b>certutil -hashfile pytorch_model-00002-of-00007.bin SHA256
SHA256 的 pytorch_model-00002-of-00007.bin 哈希:
1cd596bd15905248b20b755daf12a02a8fa963da09b59da7fdc896e17bfa518c
CertUtil: -hashfile 命令成功完成。
C:\Users\qjfen\Downloads\chatglm2-6b>certutil -hashfile pytorch_model-00003-of-00007.bin SHA256
812edc55c969d2ef82dcda8c275e379ef689761b13860da8ea7c1f3a475975c8
C:\Users\qjfen\Downloads\chatglm2-6b>certutil -hashfile pytorch_model-00004-of-00007.bin SHA256
555c17fac2d80e38ba332546dc759b6b7e07aee21e5d0d7826375b998e5aada3
C:\Users\qjfen\Downloads\chatglm2-6b>certutil -hashfile pytorch_model-00005-of-00007.bin SHA256
cb85560ccfa77a9e4dd67a838c8d1eeb0071427fd8708e18be9c77224969ef48
C:\Users\qjfen\Downloads\chatglm2-6b>certutil -hashfile pytorch_model-00006-of-00007.bin SHA256
09ebd811227d992350b92b2c3491f677ae1f3c586b38abe95784fd2f7d23d5f2
C:\Users\qjfen\Downloads\chatglm2-6b>certutil -hashfile pytorch_model-00007-of-00007.bin SHA256
316e007bc727f3cbba432d29e1d3e35ac8ef8eb52df4db9f0609d091a43c69cb

这里需要推到服务器中。并在ubuntu下用sha256sum <filename> 校验下文件。

注意如果模型是坏的,会出现第一次推理要大概10分钟、而且提示idn越界什么的错误。

5.3 运行测试


切换回主目录
python3.10
>>> from transformers import AutoTokenizer, AutoModel
>>> tokenizer = AutoTokenizer.from_pretrained("chatglm2-6b", trust_remote_code=True)
>>> model = AutoModel.from_pretrained("chatglm2-6b", trust_remote_code=True, device='cuda')
>>> model = model.eval()
>>> response, history = model.chat(tokenizer, "你好", history=[])
>>> print(response)

5.4 gpu占用

(base) root@ubuntuserver:~/work/ChatGLM2-6B/chatglm2-6b# nvidia-smi
Mon Sep 11 07:12:21 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.54       Driver Version: 510.54       CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:00:07.0 Off |                  N/A |
| 30%   41C    P2   159W / 350W |  13151MiB / 24576MiB |     38%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A     55025      C   python3.10                      13149MiB |
+-----------------------------------------------------------------------------+
(base) root@ubuntuserver:~/work/ChatGLM2-6B/chatglm2-6b#

6. 测试官方提供的demo


6.1 cli demo


vim cli_demo.py
修改下模型路径为chatglm2-6b即可运行测试 

用户:hello

ChatGLM:Hello! How can I assist you today?

用户:你好

ChatGLM:你好! How can I assist you today?

用户:请问怎么应对嵌入式工程师的中年危机

6.2 web_demo

修改模型路径
vim web_demo.py

tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).cuda()


修改为

tokenizer = AutoTokenizer.from_pretrained("chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("chatglm2-6b", trust_remote_code=True).cuda()

 

6.3 web_demo2

python3.10 -m pip install streamlit  -i https://pypi.tuna.tsinghua.edu.cn/simple
python3.10 -m streamlit run web_demo2.py --server.port 3389


内网: 3389 , 外网:16114
本地浏览器打开:lyg.blockelite.cn:16114

 

6.4 api.py


tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).cuda()
修改为
tokenizer = AutoTokenizer.from_pretrained("chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("chatglm2-6b", trust_remote_code=True).cuda()

另外,智星云服务器设置了端口映射,把port修改为3389,可以通过外网访问。

运行:
python3.10 api.py

客户端(智星云服务器):
curl -X POST "http://127.0.0.1:3389" \
     -H 'Content-Type: application/json' \
     -d '{"prompt": "你好", "history": []}'
     
客户端2(任意linux系统) 
curl -X POST "http://lyg.blockelite.cn:16114" \
     -H 'Content-Type: application/json' \
     -d '{"prompt": "你好", "history": []}'
     

(base) root@ubuntuserver:~/work/ChatGLM2-6B# python3.10 api.py
Loading checkpoint shards: 100%|█████████████████████████████████████████████████████████████████████████████████| 7/7 [00:46<00:00,  6.60s/it]
INFO:     Started server process [91663]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:3389 (Press CTRL+C to quit)
[2023-09-11 08:55:21] ", prompt:"你好", response:"'你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。'"
INFO:     127.0.0.1:33514 - "POST / HTTP/1.1" 200 OK
[2023-09-11 08:55:34] ", prompt:"你好", response:"'你好👋!我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。'"
INFO:     47.100.137.161:49200 - "POST / HTTP/1.1" 200 OK
^CINFO:     Shutting down
INFO:     Waiting for application shutdown.
INFO:     Application shutdown complete.
INFO:     Finished server process [91663]
(base) root@ubuntuserver:~/work/ChatGLM2-6B#

7. 测试量化后的int4模型


7.1 准备模型以及配置文件


下载模型,这里有个秘诀,用浏览器点击 这个模型:models / chatglm2-6b-int4 / pytorch_model.bin
下载时候,可以复制路径,然后取消。到服务器中,wget https://cloud.tsinghua.edu.cn/seafhttp/files/7cf6ec60-15ea-4825-a242-1fe88af0f404/pytorch_model.bin

GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm2-6b-int4

下载ChatGLM2作者上传到清华网盘的模型文件
https://cloud.tsinghua.edu.cn/d/674208019e314311ab5c/?p=%2Fchatglm2-6b-int4
并覆盖到chatglm2-6b-int4

tar -zcvf chatglm2-6b-int4_huggingface_src_20230911.tar.gz chatglm2-6b-int4 

7.2 修改cli_demo.py

tokenizer = AutoTokenizer.from_pretrained("chatglm2-6b-int4", trust_remote_code=True)
model = AutoModel.from_pretrained("chatglm2-6b-int4", trust_remote_code=True).cuda()

7.3 运行测试

python3.10 cli_demo.py(base) root@ubuntuserver:~# nvidia-smi
Mon Sep 11 09:14:16 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.54       Driver Version: 510.54       CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:00:07.0 Off |                  N/A |
| 30%   31C    P8    25W / 350W |   5307MiB / 24576MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A     98805      C   python3.10                       5305MiB |
+-----------------------------------------------------------------------------+
(base) root@ubuntuserver:~#

8. 微调


这次微调,不能用python3.10了,脚本中是调用一些通过pip安装的软件如torchrun,用python3.10的pip安装的torch、streamlit未添加进系统运行环境,无法直接运行。
由于requirement.txt中的streamlit和python3.9有问题,因此注释掉streamlit即可。

8.1 安装依赖

pip install rouge_chinese nltk jieba datasets -i https://pypi.tuna.tsinghua.edu.cn/simple

8.2 准备数据集


下载AdvertiseGen.tar.gz
https://cloud.tsinghua.edu.cn/f/b3f119a008264b1cabd1/?dl=1

放到ptuning目录下

解压
tar -zvxf AdvertiseGen.tar.gz

8.3 训练


修改脚本中的模型路径:

--model_name_or_path THUDM/chatglm2-6b \
修改为
--model_name_or_path ../chatglm2-6b \


--max_steps 3000 \
改为
--max_steps 60 \
这样数分钟后即可完成训练。


--save_steps 1000 \
改为
--save_steps 60 \

训练:
bash train.sh微调时GPU利用情况:

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A    109674      C   ...user/anaconda3/bin/python     7631MiB |
+-----------------------------------------------------------------------------+
Mon Sep 11 09:48:55 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.54       Driver Version: 510.54       CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:00:07.0 Off |                  N/A |
| 67%   60C    P2   331W / 350W |   7633MiB / 24576MiB |     86%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A    109674      C   ...user/anaconda3/bin/python     7631MiB |
+-----------------------------------------------------------------------------+


8.4 训练完成


Training completed. Do not forget to share your model on huggingface.co/models =)

{'train_runtime': 358.4221, 'train_samples_per_second': 2.678, 'train_steps_per_second': 0.167, 'train_loss': 4.090850830078125, 'epoch': 0.01}
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████| 60/60 [05:58<00:00,  5.97s/it]
***** train metrics *****epoch                    =       0.01train_loss               =     4.0909train_runtime            = 0:05:58.42train_samples            =     114599train_samples_per_second =      2.678train_steps_per_second   =      0.167
(base) root@ubuntuserver:~/work/ChatGLM2-6B/ptuning#

查看模型文件:
这个多了个checkpoint-60文件夹,内面有模型文件
ChatGLM2-6B/ptuning/output/adgen-chatglm2-6b-pt-128-2e-2/checkpoint-60

8.5 推理

还是修改推理脚本中的模型位置
vim evaluate.sh


STEP=3000
修改为
STEP=60


--model_name_or_path THUDM/chatglm2-6b \
修改为
--model_name_or_path ../chatglm2-6b \

运行
bash evaluate.sh

修改web_demo.sh中的模型和checkpoint为
    --model_name_or_path ../chatglm2-6b \
    --ptuning_checkpoint output/adgen-chatglm2-6b-pt-128-2e-2/checkpoint-60 \

问题:解决ImportError: cannot import name ‘soft_unicode‘ from ‘markupsafe‘
python -m pip install markupsafe==2.0.1

参考


[1]https://github.com/THUDM/ChatGLM2-6B
[2]ChatGLM-6B (介绍以及本地部署),https://blog.csdn.net/qq128252/article/details/129625046
[3]ChatGLM2-6B|开源本地化语言模型,https://openai.wiki/chatglm2-6b.html
[3]免费部署一个开源大模型 MOSS,https://zhuanlan.zhihu.com/p/624490276
[4]LangChain + ChatGLM2-6B 搭建个人专属知识库,https://zhuanlan.zhihu.com/p/643531454
[5]https://pytorch.org/get-started/locally/

相关文章:

开源大模型ChatGLM2-6B 1. 租一台GPU服务器测试下

0. 环境 租用了1台GPU服务器&#xff0c;系统 ubuntu20&#xff0c;GeForce RTX 3090 24G。过程略。本人测试了ai-galaxy的&#xff0c;今天发现网友也有推荐autodl的。 &#xff08;GPU服务器已经关闭&#xff0c;因此这些信息已经失效&#xff09; SSH地址&#xff1a;* 端…...

SQL10 用where过滤空值练习

描述 题目&#xff1a;现在运营想要对用户的年龄分布开展分析&#xff0c;在分析时想要剔除没有获取到年龄的用户&#xff0c;请你取出所有年龄值不为空的用户的设备ID&#xff0c;性别&#xff0c;年龄&#xff0c;学校的信息。 示例&#xff1a;user_profile iddevice_idge…...

JVM--Hotspot Architecture 详解

一、Java Virtual Machine &#xff08;JVM&#xff09;概述 Java Virtual Machine 虚拟机 &#xff08;JVM&#xff09; 是一种抽象的计算机。JVM本身也是一个程序&#xff0c;但是对于编写在其中执行的程序来说&#xff0c;它看起来像一台机器。对于特定的操作系统&#xff…...

ThreadLocal功能实现

模拟ThreadLocal功能实现 当前线程任意方法内操作连接对象 一个栈对应一个线程 , 一个方法调用另一个方法都是在一个线程内 , 只有执行了线程的start方法才会创建一个线程 定义一个Map集合 , key是当前线程(Thread.currentThread) , value是要绑定的数据(Connection对象) 以…...

Linux编辑器-vim使用

文章目录 前言一、vim编辑器1、vim的基本概念2、vim的基本操作2.1 命令模式切换至插入模式2.2 插入模式切换至命令模式2.3 命令模式切换至底行模式 3、vim命令模式命令集3.1 移动光标3.2 删除文字3.3 复制与粘贴3.4 替换3.5 撤销上一次操作3.6 更改3.7 跳至指定的行 4、vim末行…...

自助式数据分析平台:JVS智能BI功能介绍(二)数据集管理

数据集是JVS-智能BI中承载数据、使用数据、管理数据的基础&#xff0c;同样也是构建数据分析的基础。可以通俗地将其理解为数据库中的普通的表&#xff0c;他来源于智能的ETL数据加工工具&#xff0c;可以将数据集进行分析图表、统计报表、数字大屏、数据服务等制作。 在整体的…...

《5G技术引领教育信息化新革命》

5G技术引领教育信息化新革命 随着5G技术的快速发展&#xff0c;教育领域也迎来了全新的信息化时代。5G技术为教育行业提供了更高速、更稳定、更智能的网络连接&#xff0c;使得教育信息化不再局限于传统的课堂教学&#xff0c;而是延伸到了线上、线下的全时空教育。本文将详细介…...

cmake学习过程记录

目录 基础命令学习配置opencvcmake (Windows版本) 基础命令学习 //设置最低版本号 cmake_minimum_required(VERSION 3.5)//设置项目名称 project (hello_headers)//递归遍历文件夹src中的cpp文件放到变量SOURCES中 file(GLOB_RECURSE SOURCES src/*.cpp)//设置目标exe名称…...

Vue3、Vite使用 html2canvas 把Html生成canvas转成图片并保存,以及填坑记录

这两天接到新需求就是生成海报分享&#xff0c;生成的格式虽然是一样的但是自己一点点画显然是不符合我摸鱼人的性格&#xff0c;就找到了html2canvas插件&#xff0c;开始动工。 安装 npm install html2canvas --save文档 options 的参数都在里面按照自己需求使用 https://a…...

centos yum源配置(CentOS7 原生 yum 源修改为阿里 yum 源)

文章目录 centos yum源配置centos搭建内网yum源内网centos的yum软件源配置CentOS7 原生 yum 源修改为阿里 yum 源 centos yum源配置 centos搭建内网yum源 您好,在CentOS系统上搭建本地内网YUM仓库的方法如下: 安装httpd和createrepo工具 yum install httpd createrepo -y创…...

linux————ansible

一、认识自动化运维 自动化运维: 将日常IT运维中大量的重复性工作&#xff0c;小到简单的日常检查、配置变更和软件安装&#xff0c;大到整个变更流程的组织调度&#xff0c;由过去的手工执行转为自动化操作&#xff0c;从而减少乃至消除运维中的延迟&#xff0c;实现“零延时”…...

初识Java 8-1 接口和抽象类

目录 抽象类和抽象方法 接口定义 默认方法 多重继承 接口中的静态方法 作为接口的Instrument 本笔记参考自&#xff1a; 《On Java 中文版》 接口和抽象类提供了一种更加结构化的方式分离接口和实现。 抽象类和抽象方法 抽象类&#xff0c;其介于普通类和接口之间。在构…...

微信小程序音频后台播放功能

微信小程序在手机息屏后依旧能播放音频&#xff0c;需要使用 wx.getBackgroundAudioManager() 方法创建后台音乐播放器&#xff0c;并将音乐播放任务交给这个后台播放器。 具体实现步骤如下&#xff1a; 小程序页面中&#xff0c;使用 wx.getBackgroundAudioManager() 方法创…...

NotePad——xml格式化插件xml tools在线安装+离线安装

在使用NotePad时&#xff0c;在某些情形下&#xff0c;需要格式化Xml格式内容&#xff0c;可以使用Xml Tools插件。 一、在线安装 1. 打开Notepad 软件 2. 选择插件&#xff0c;选择“插件管理” 3. 搜索 XML Tools&#xff0c;找到该插件后&#xff0c;勾选该文件&#xff…...

图书管理系统 数据结构先导课暨C语言大作业复习 | JorbanS

问题描述 读取给定的图书文件book.txt中的信息&#xff08;book.txt中部分图书信息如下图所示&#xff09;&#xff0c;完成一个图书信息管理系统&#xff0c;该系统的各个功能模块要求利用菜单选项进行选择。 系统功能要求 图书浏览 读取book.txt中的文件信息并依次输出所…...

python 爬虫的开发环境配置

1、新建一个python项目 2、在控制台中分别安装下面三个包 pip install requests pip install beautifulsoup4 pip install selenium/ 如果安装时报以下错误&#xff1a; raise ReadTimeoutError(self._pool, None, "Read timed out.") pip._vendor.urllib3.exceptio…...

技术架构图是什么?和业务架构图的区别是什么?

技术架构图是什么&#xff1f; ​技术架构图是一种图形化工具&#xff0c;用于呈现软件、系统或应用程序的技术层面设计和结构。它展示了系统的各种技术组件、模块、服务以及它们之间的关系和交互方式。技术架构图关注系统内部的技术实现细节&#xff0c;以及各个技术组件之…...

数据增强

一、数据增强 当你训练一个机器学习模型时&#xff0c;你实际做工作的是调参&#xff0c;以便将特定的输入&#xff08;一副图像&#xff09;映像到输出&#xff08;标签&#xff09;。我们优化的目标是使模型的损失最小化&#xff0c; 以正确的方式调节优化参数即可实现这一目…...

【Unity】2D 对话模块的实现

对话模块主要参考 【Unity教程】剧情对话系统 实现。 在这次模块的构建将基于 unity ui 组件 和 C#代码实现一个从excel 文件中按照相应规则读取数据并展示的逻辑。这套代码不仅能实现正常的对话&#xff0c;也实现了对话中可以通过选择不同选项达到不同效果的分支对话功能。 …...

laravel安装初步使用学习 composer安装

一、什么是laravel框架 Laravel框架可以开发各种不同类型的项目&#xff0c;内容管理系统&#xff08;Content Management System&#xff0c;CMS&#xff09;是一种比较典型的项目&#xff0c;常见的网站类型&#xff08;如门户、新闻、博客、文章等&#xff09;都可以利用CM…...

【VS插件】VS code上的Remote - SSH

【VS插件】VS code上的Remote - SSH 目录 【VS插件】VS code上的Remote - SSH获得Linux服务器或者Linux系统的IP地址下载插件远程登录注意如果Linux虚拟机系统无法连接成功可能是没有开启ssh服务优势 作者&#xff1a;爱写代码的刚子 时间&#xff1a;2023.9.12 前言&#xff1…...

TensorFlow 02(张量)

一、张量 张量Tensor 张量是一个多维数组。与NumPy ndarray对象类似&#xff0c;tf.Tensor对象也具有数据类型和形状。如下图所示: 此外&#xff0c;tf.Tensors可以保留在GPU中。TensorFlow提供了丰富的操作库 (tf.add&#xff0c;tf.matmul,tf.linalg.inv等)&#xff0c;它们…...

513. 找树左下角的值

代码链接&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 思路&#xff1a; 万金油层次遍历&#xff0c;保存每一层的第一个元素返回就行了 我的代码&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* …...

量化:基于支持向量机的择时策略

文章目录 参考机器学习简介策略简介SVM简介整体流程收集数据准备数据建立模型训练模型测试模型调节参数 参考 Python机器学习算法与量化交易 利用机器学习模型&#xff0c;构建量化择时策略 机器学习简介 机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。…...

成功解决Selenium 中116版本的chromedriver找不到问题

Selenium 中的Google&#xff08;谷歌浏览器&#xff09;最新版本chromedriver 文章目录 Selenium 中的Google&#xff08;谷歌浏览器&#xff09;最新版本chromedriver1.当前作者的谷歌浏览器版本2.当前驱动官网的最新版本3.当不想降低浏览器版本继续使用谷歌浏览器的办法 1.当…...

PYQT常用组件--方法汇总

QTimeEdit timeEdit是Qt框架中的一个时间编辑器控件&#xff0c;它提供了以下常用方法&#xff1a; setTime(QTime time): 设置时间编辑器的时间为指定的QTime对象。time(): 返回时间编辑器的当前时间&#xff0c;返回一个QTime对象。setDateTime(QDateTime dateTime): 设置时…...

Linux系统编程(一):文件 I/O

参考引用 UNIX 环境高级编程 (第3版)黑马程序员-Linux 系统编程 1. UNIX 基础知识 1.1 UNIX 体系结构&#xff08;下图所示&#xff09; 从严格意义上说&#xff0c;可将操作系统定义为一种软件&#xff0c;它控制计算机硬件资源&#xff0c;提供程序运行环境&#xff0c;通常…...

OSM+three.js打造3D城市

对于我在 Howest 的研究项目,我决定构建一个 3D 版本的 Lucas Bebber 的“交互式讲故事的动画地图路径”项目。我将使用 OSM 中的矢量轮廓来挤出建筑物的形状并将它们添加到 3js 场景中,随后我将对其进行动画处理。 一、开发环境 为了使用 Node 和 npm 包,我选择使用 Vite…...

02JVM_垃圾回收GC

二、垃圾回收GC 在堆里面存放着java的所有对象实例&#xff0c;当对象为“死去”&#xff0c;也就是不再使用的对象&#xff0c;就会进行垃圾回收GC 1.如何判断对象可以回收 1.1引用计数器 介绍 在对象中添加一个引用计数器&#xff0c;当一个对象被其他变量引用时这个对象…...

ARM Linux DIY(八)USB 调试

前言 V3s 带有一个 USB 接口&#xff0c;将其设置为 HOST 或 OTG 模式&#xff0c;这样可以用来接入键盘、鼠标等 USB 外设。 USB 简介 USB 有两种设备&#xff1a;HOST 和 USB 功能设备。 在 USB2.0 中又引入了一个新的概念 OTG&#xff0c;即设备角色可以动态切换。 切换方…...

wordpress 摘要长度/网页制作教程视频

checkboxcheckbox1checkbox2checkbox3...

西安市建设委员会的网站/南宁网站推广哪家好

1. find find pathname -options [-print -exec -ok] 让我们来看看该命令的参数&#xff1a; pathname find命令所查找的目录路径。例如用.来表示当前目录&#xff0c;用/来表示系统根目录。 -print find命令将匹配的文件输出到标准输出。 -ex…...

物流建设网站总结/百度网盘资源搜索

点蓝字关注我们大胆热爱Hello Everybody【火影秘术小课堂】开课了本期的主题【c盘满了怎么办】火粉们赶紧搬好小板凳&#xff0c;准备上课吧1c盘为什么会满在如今这个信息爆炸增长的时代&#xff0c;我们要看的信息越来越多&#xff0c;也就意味着在电脑里有意无意留存的资料也…...

wordpress修改地址无法访问/有哪些搜索引擎

报错今天线上遇到故障&#xff0c;php进行因为段错误退出了&#xff0c;系统日志中的kernel报错如下&#xff1a;Feb 25 22:25:11 web_server_01 kernel: __ratelimit: 250 callbacks suppressedFeb 25 22:25:11 web_server_01 kernel: php-fpm[25942]: segfault at 2c6 ip 000…...

建设英文商城网站/网络营销的含义的理解

九章算法官网-原文网址 http://www.jiuzhang.com/problem/55/ 题目 给一个字符串和一个旋转的偏移量offset&#xff0c;将字符串循环右移offset位。 如&#xff1a;"abcdefg" 循环右移 4位之后变为了&#xff1a;"defgabc" 要求做到O(1)的额外空间耗费…...

大连 网站制作/国外网站制作

关于需求跟踪矩阵的一些认识&#xff1a; 3个youtube的视频 https://www.youtube.com/watch?vA1rF0BhcddQ &#xff08;这个视频&#xff09;推荐了这几个网址&#xff08;这几个推荐的网址很好&#xff09; https://www.softwaretestingmaterial.com/requirements-…...