大模型实战营第二期——2. 浦语大模型趣味Demo

文章目录

  • 1. 大模型及InternLM模型介绍
  • 2. InternLM-Chat-7B智能对话Demo
    • 2.1 基本说明
    • 2.2 实际操作
      • 2.2.1 创建开发机
      • 2.2.2 conda环境配置
      • 2.2.3 模型下载
      • 2.2.4 InternLM代码库下载和修改
      • 2.2.5 cli运行
      • 2.2.6 web_demo运行
  • 3. Lagent智能体工具调用Demo
    • 3.1 基本说明
    • 3.2 实际操作
      • 3.2.1 准备操作
      • 3.2.2 修改代码
      • 3.2.3 运行web_demo
  • 4. 浦语.灵笔图文创作理解Demo
    • 4.1 基本说明
    • 4.2 实际操作
      • 4.2.1 调整开发机配置
      • 4.2.2 conda环境配置
      • 4.2.3 模型下载
      • 4.2.4 InternLM-XComposer代码库下载和运行
  • 5. 通用环境配置

视频链接: 轻松玩转书生·浦语大模型趣味Demo
文档链接: InternLM/tutorial/helloworld/hello_world.md
Intern-Studio链接: Intern-Studio控制台

1. 大模型及InternLM模型介绍

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

  • 大模型:参数规模大的模型,
  • 这个大的量级指的是: 十亿甚至千亿以上的参数

在这里插入图片描述

2. InternLM-Chat-7B智能对话Demo

在这里插入图片描述

2.1 基本说明

在这里插入图片描述

  • 7B(Billion, 10亿),70亿ca参数
  • 8K token的上下文窗口长度

2.2 实际操作

2.2.1 创建开发机

在课程分配的InterStudio中,创建新的开发机,进行相应的选择,类似:

在这里插入图片描述
对于InternLM-Chat-7B的部署测试,使用A100(1/4)即可(1个A100的显存是80GB,四分之一就是20GB)

在这里插入图片描述
创建完成之后,刚开始会显示排队(其实是在为你分配资源),分配好之后,右侧的SSH连接进入开发机就可以使用了

进入开发机会新打开一个页面,就是改了点界面的jupyter,那就不需要用vscode走ssh连接了,直接jupyter操作好了。
在这里插入图片描述

2.2.2 conda环境配置

接下来根据文档的提示,配置一些必要的环境

# 1. 请每次使用 jupyter lab 打开终端时务必先执行 bash 命令进入 bash 中
bash 

# 2. 执行该脚本文件来安装项目实验环境, 从本地克隆一个已有的 pytorch 2.0.1 的环境
bash /root/share/install_conda_env_internlm_base.sh internlm-demo  
# 这个要按一会的,等着吧

# 3. 检查conda环境
conda info -e                                                                                
# conda environments:
#
base                  *  /root/.conda
internlm-demo            /root/.conda/envs/internlm-demo

# 4.然后激活刚刚新建的环境
conda activate internlm-demo 
# 则conda环境从base变成了internlm-demo

# 5.并在环境中安装运行 demo 所需要的依赖。
python -m pip install --upgrade pip # 升级pip
pip install modelscope==1.9.5
# 其实安装modelscope的过程中,也会安装 huggingface-hub-0.20.3 包
pip install transformers==4.35.2
pip install streamlit==1.24.0
pip install sentencepiece==0.1.99
pip install accelerate==0.24.1

一些探索:

# 其实本机使用的shell就是bash,也不需要切换
(base) root@intern-studio-052101:/opt/jupyterlab$ echo $SHELL
/bin/bash
(base) root@intern-studio-052101:/opt/jupyterlab$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash

关于bash,之前写过macOS的terminal的zsh颜色主题设置及zsh和bash切换

2.2.3 模型下载

InternStudio 平台的 share 目录下已经为我们准备了全系列的 InternLM 模型,所以我们可以直接复制即可

# 注意,这里所说的share是/root/share/model_repos/目录
ls /root/share/model_repos/
> internlm-20b       internlm-chat-7b       internlm2-20b       internlm2-base-7b         internlm2-chat-20b-sft   internlm2-chat-7b-sft
internlm-7b        internlm-chat-7b-8k    internlm2-7b        internlm2-chat-20b        internlm2-chat-7b
internlm-chat-20b  internlm-chat-7b-v1_1  internlm2-base-20b  internlm2-chat-20b-4bits  internlm2-chat-7b-4bits
# 而不是下面这个目录
ls /root/share/temp/model_repos
> internlm-chat-7b  internlm-xcomposer-7b

# 复制是为了留个备份
mkdir -p /root/model/Shanghai_AI_Laboratory
cp -r /root/share/temp/model_repos/internlm-chat-7b /root/model/Shanghai_AI_Laboratory

# 复制好之后可以去看看文件内容,可以用jupyter左侧的目录看,也可以用命令行查看详情
ls -lh /root/model/Shanghai_AI_Laboratory/internlm-chat-7b 
total 14G
-rw------- 1 root root  12K Feb  8 15:36 README.md
-rw------- 1 root root  731 Feb  8 15:36 config.json
-rw------- 1 root root   62 Feb  8 15:36 configuration.json
-rw------- 1 root root 5.1K Feb  8 15:36 configuration_internlm.py
-rw------- 1 root root  132 Feb  8 15:36 generation_config.json
-rw------- 1 root root  43K Feb  8 15:36 modeling_internlm.py
-rw------- 1 root root 1.9G Feb  8 15:36 pytorch_model-00001-of-00008.bin
-rw------- 1 root root 1.9G Feb  8 15:36 pytorch_model-00002-of-00008.bin
-rw------- 1 root root 1.9G Feb  8 15:36 pytorch_model-00003-of-00008.bin
-rw------- 1 root root 1.9G Feb  8 15:36 pytorch_model-00004-of-00008.bin
-rw------- 1 root root 1.9G Feb  8 15:36 pytorch_model-00005-of-00008.bin
-rw------- 1 root root 1.9G Feb  8 15:36 pytorch_model-00006-of-00008.bin
-rw------- 1 root root 1.9G Feb  8 15:36 pytorch_model-00007-of-00008.bin
-rw------- 1 root root 807M Feb  8 15:36 pytorch_model-00008-of-00008.bin
-rw------- 1 root root  37K Feb  8 15:36 pytorch_model.bin.index.json
-rw------- 1 root root   95 Feb  8 15:36 special_tokens_map.json
-rw------- 1 root root 8.8K Feb  8 15:36 tokenization_internlm.py
-rw------- 1 root root 1.6M Feb  8 15:36 tokenizer.model
-rw------- 1 root root  343 Feb  8 15:36 tokenizer_config.json

很明显,里面有8个bin文件夹是用来存放权重的,加起来大约是14GB左右。
在这里插入图片描述


如果使用的是非InterStudio平台进行训练部署,那么可以使用modelscope进行下载,模型大小为 14 GB,下载模型大概需要 10~20 分钟

import torch
from modelscope import snapshot_download, AutoModel, AutoTokenizer
import os
model_dir = snapshot_download('Shanghai_AI_Laboratory/internlm-chat-7b', cache_dir='/root/model', revision='v1.0.3')

参考:

  • modelscope模型库/internlm-chat-7b || 书生·浦语-对话-7B
  • hugging face-internlm/internlm-chat-7b
  • 这两个模型库里也都可以看到模型文件的详情

2.2.4 InternLM代码库下载和修改

mkdir /root/code
cd /root/code
git clone https://gitee.com/internlm/InternLM.git

# 切换到教程的分支,保证更好的复现效果
cd InternLM
git checkout 3028f07cb79e5b1d7342f4ad8d11efad3fd13d17

然后将/root/code/InternLM/web_demo.py 中 29 行和 33 行的模型更换为本地的 /root/model/Shanghai_AI_Laboratory/internlm-chat-7b

2.2.5 cli运行

可以在 /root/code/InternLM 目录下新建一个 cli_demo.py 文件,将以下代码填入其中:

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM


model_name_or_path = "/root/model/Shanghai_AI_Laboratory/internlm-chat-7b"

tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_name_or_path, trust_remote_code=True, torch_dtype=torch.bfloat16, device_map='auto')
model = model.eval()

system_prompt = """You are an AI assistant whose name is InternLM (书生·浦语).
- InternLM (书生·浦语) is a conversational language model that is developed by Shanghai AI Laboratory (上海人工智能实验室). It is designed to be helpful, honest, and harmless.
- InternLM (书生·浦语) can understand and communicate fluently in the language chosen by the user such as English and 中文.
"""

messages = [(system_prompt, '')]

print("=============Welcome to InternLM chatbot, type 'exit' to exit.=============")

while True:
    input_text = input("User  >>> ")
    input_text = input_text.replace(' ', '')
    if input_text == "exit":
        break
    response, history = model.chat(tokenizer, input_text, history=messages)
    messages.append((input_text, response))
    print(f"robot >>> {response}")

然后去运行上面的脚本(建议这里去vscode的终端运行下面的命令,看起来会比较好看。
另外因为使用的是绝对路径,所以不用担心cli的当前执行路径问题)

python /root/code/InternLM/cli_demo.py

# 需要一些时间加载模型
> Loading checkpoint shards: 100%|███████████████████████████████████████████████████████████| 8/8 [00:40<00:00,  5.02s/it]
# 然后就会出现对话界面,等待输入对话,速度有点慢,等等就好。
=============Welcome to InternLM chatbot, type 'exit' to exit.=============
User  >>> 有什么好用的本地markdown编辑笔记软件吗
robot >>> 目前有许多好用的本地 Markdown 编辑软件供您选择。以下是一些常用的本地 Markdown 编辑器:

1. Typora - 一个简单易用的 Markdown 编辑器,具有实时预览功能。
2. Marked - 一个轻量级的 Markdown 编辑器,支持多种输出格式。
3. Marked2 - 另一个轻量级的 Markdown 编辑器,具有类似于 Typora 的实时预览功能。
4. Sublime Text - 一款功能强大的代码编辑器,也支持 Markdown 格式。
5. Atom - 由 GitHub 开发的一个开源文本编辑器,支持 Markdown 和许多其他编程语言。
6. Vim - 一款经典的文本编辑器,支持多种编程语言,包括 Markdown。
7. Nano - 一个轻量级的文本编辑器,支持 Markdown 和 Git。
8. Visual Studio Code - 一个免费的跨平台代码编辑器,支持 Markdown 和许多其他编程语言。

这些工具都具有不同的优点和缺点,您可以根据自己的需要选择最适合您的工具。

输入exit即可退出

2.2.6 web_demo运行

这个就切换到vscode里去运行吧。。

# 切换到vscode,就需要重新进入对应的conda和shell环境了
bash
conda activate internlm-demo  # 首次进入 vscode 会默认是 base 环境,所以首先切换环境
cd /root/code/InternLM
streamlit run web_demo.py --server.address 127.0.0.1 --server.port 6006

教程里说需要配置端口,其实不用。。。(6006默认是tensorboard的端口),

  • 如果是jupyter的命令行,则不可以,
  • 但是如果是vscode里的命令行运行,则就可以打开
    在这里插入图片描述

在这里插入图片描述
运行这个命令等待一会,然后就可以看到右侧弹出一个窗口,点击Open in Browser,就可以打开网页了。

打开网页链接之后,模型才会开始加载
在这里插入图片描述

加载模型结束之后才会显示这个界面。

3. Lagent智能体工具调用Demo

在这里插入图片描述

3.1 基本说明

在这里插入图片描述

3.2 实际操作

3.2.1 准备操作

  1. 和上一个智能对话Demo需要的conda环境是一致的
  2. 需要下载的预训练模型也是InternLM-Chat-7B

需要安装的代码库不是InternLM.git了,而是lagent.git,为了保证下载速度,这里用的都是gitee上的链接,而不是github。

与上面的操作类似,

cd /root/code
git clone https://gitee.com/internlm/lagent.git
cd /root/code/lagent
git checkout 511b03889010c4811b1701abb153e02b8e94fb5e # 尽量保证和教程commit版本一致
pip install -e . # 源码安装

3.2.2 修改代码

然后直接复制3.4 修改代码中的内容到/root/code/lagent/examples/react_web_demo.py中。

其实有意义的修改没几个,主要还是修改预训练模型的位置,其它就是注释掉一些页面显示元素,以及空格换行等格式
在这里插入图片描述

3.2.3 运行web_demo

和上面也是类似的

streamlit run /root/code/lagent/examples/react_web_demo.py --server.address 127.0.0.1 --server.port 6006

这里有了Lagent,就可以针对具体的场景,进行一些适配,比如求解数学问题。
试了一下经典的鸡兔同笼问题:

现有一笼子,里面有鸡和兔子若干只,数一数,共有头14个,腿38条,聪明的小朋友,你能算出鸡和兔子各有多少只吗?

反应比较慢,可以通过命令行查看模型加载情况:
在这里插入图片描述

效果还挺好的🥳🥳🥳
在这里插入图片描述
在这里插入图片描述

另外,由于左侧有上传文件的按钮,所以试了一下,不是多模态的,哈哈哈,不支持图。
在这里插入图片描述
又试了一下,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
并不具备生图的能力,所以还是以文字为主

在这里插入图片描述

4. 浦语.灵笔图文创作理解Demo

在这里插入图片描述

4.1 基本说明

在这里插入图片描述

4.2 实际操作

4.2.1 调整开发机配置

在这里插入图片描述

  • 关闭之前的页面,停止开发机,然后点击升降配置,选择 A100(1/4)*2,再次启动。
  • 可以看到,root目录下,之前创建的modelroot文件夹内容还在,
  • 同时conda info -e可以看到,之前创建的环境internlm-demo还在,就可以继续使用了

4.2.2 conda环境配置

# 这里用的conda环境的脚本和internlm-demo的一样,只是名字改了,
# 因此如果是在之前开发机的基础上升降配置得到的,这步可以不执行
# 需要激活的则是: conda activate internlm-demo

# 否则,如果是新建的开发机,就还要继续执行
/root/share/install_conda_env_internlm_base.sh xcomposer-demo
conda activate xcomposer-demo


# 但是pip安装则和之前区别很大,这个必须要执行
pip install transformers==4.33.1 timm==0.4.12 sentencepiece==0.1.99 gradio==3.44.4 markdown2==2.4.10 xlsxwriter==3.1.2 einops accelerate
  • 关于timm库,详见:timm库(CV利器)的入门教程
  • gradio:快速生成 AI 应用的框架对比:Gradio、Streamlit 和 Dash

4.2.3 模型下载

mkdir -p /root/model/Shanghai_AI_Laboratory
cp -r /root/share/temp/model_repos/internlm-xcomposer-7b /root/model/Shanghai_AI_Laboratory

也可以通过代码下载,类似上面(只是模型名字不一样):

import torch
from modelscope import snapshot_download, AutoModel, AutoTokenizer
import os
model_dir = snapshot_download('Shanghai_AI_Laboratory/internlm-xcomposer-7b', cache_dir='/root/model', revision='master')

4.2.4 InternLM-XComposer代码库下载和运行

cd /root/code
git clone https://gitee.com/internlm/InternLM-XComposer.git
cd /root/code/InternLM-XComposer
git checkout 3e8c79051a1356b9c388a6447867355c0634932d  # 最好保证和教程的 commit 版本一致

这次没啥要改的了,直接跑命令行就行

cd /root/code/InternLM-XComposer
python examples/web_demo.py  \
    --folder /root/model/Shanghai_AI_Laboratory/internlm-xcomposer-7b \
    --num_gpus 1 \
    --port 6006

# OSError: Cannot find empty port in range: 6006-6006. You can specify a different port by setting the GRADIO_SERVER_PORT environment variable or passing the `server_port` parameter to `launch()`
# 如果报错端口被占用,则换一个端口号即可,比如: 6008或者别的任何一个

这里 num_gpus 1 是因为InternStudio平台对于 A100(1/4)*2 识别仍为一张显卡。但如果之后使用两张 3090 来运行此 demo,仍需将 num_gpus 设置为 2 。

但是我的gradio页面显示很乱。。
在这里插入图片描述

运行时终端提示:
Could not create share link. Missing file: /root/.conda/envs/internlm-demo/lib/python3.10/site-packages/gradio/frpc_linux_amd64_v0.2. 

Please check your internet connection. This can happen if your antivirus software blocks the download of this file. You can install manually by following these steps: 

1. Download this file: https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_linux_amd64
2. Rename the downloaded file to: frpc_linux_amd64_v0.2
3. Move the file to this location: /root/.conda/envs/internlm-demo/lib/python3.10/site-packages/gradio

如果命令行下载不下来,可以先在本机下载,然后上传到服务器,然后再复制过去
cp /root/code/frpc_linux_amd64_v0.2 /root/.conda/envs/internlm-demo/lib/python3.10/site-packages/gradio

没用,不报这个错了,但是页面显示依然乱码。。哈哈哈

5. 通用环境配置

在这里插入图片描述
详见:tutorial/helloworld/hello_world.md——5. 通用环境配置
在这里插入图片描述

在这里插入图片描述

可以使用Huggingface下载模型

在这里插入图片描述

也可以使用OpenXLab下载

在这里插入图片描述
也可以通过魔塔社区——ModelScope阿里达摩院开源模型平台(通义千问),下载,

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android:Android视图组件

3.1 移动通讯技术 第一代通讯技术:大哥大,工作原理:模拟信号(说话声波引起铜片震动,电容变化,产生交变电流),工作频段(收音机调频,同一个频道才能通讯);缺点:保密性差(同频可以窃听)。 第二代通讯技术:通讯工具变小,工作原理:模拟信号变成数字信号(将声音产…

高级数据结构与算法 | 布谷鸟过滤器(Cuckoo Filter):原理、实现、LSM Tree 优化

文章目录 Cuckoo Filter基本介绍布隆过滤器局限变体 布谷鸟哈希布谷鸟过滤器 实现数据结构优化项Victim Cache备用位置计算半排序桶 插入查找删除 应用场景&#xff1a;LSM 优化 Cuckoo Filter 基本介绍 如果对布隆过滤器不太了解&#xff0c;可以看看往期博客&#xff1a;海量…

OJ_计算不带括号的表达式

题干 C实现 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stack> #include <string> #include <map> using namespace std;int main() {char str[1000] { 0 };map<char, int> priority {{\0,0},{,1},{-,1},{*,2},{/,2}};wh…

2024年【R2移动式压力容器充装】考试内容及R2移动式压力容器充装免费试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 R2移动式压力容器充装考试内容参考答案及R2移动式压力容器充装考试试题解析是安全生产模拟考试一点通题库老师及R2移动式压力容器充装操作证已考过的学员汇总&#xff0c;相对有效帮助R2移动式压力容器充装免费试题学…

高级FPGA开发之基础协议PCIe(二)

高级FPGA开发之基础协议之PCIe&#xff08;二&#xff09; 一、TLP报文类型 在PCIe总线中&#xff0c;存储器读写、I/O读写和配置读写请求TLP主要由以下几类报文组成&#xff1a; 1.1 存储器读请求TLP和读完成TLP 当PCIe主设备&#xff08;RC或者EP&#xff09;访问目标设备…

非常好看的CSS加载中特效,引用css文件既可用

非常好看的CSS加载中特效 demo效果源码&#xff1a; <!DOCTYPE html5> <head><link rel"stylesheet" type"text/css" href"demo.css"/><link rel"stylesheet" type"text/css" href"loaders.css&…

创新指南|生成式AI实验 - 企业快速渐进采用人工智能的科学新方法

生成式人工智能&#xff08;Gen AI&#xff09;正迅速成为各行各业的企业创新焦点。 生成式AI实验对于企业创新而言至关重要&#xff0c;不仅可以帮助企业识别最适合和最有影响的应用场景&#xff0c;还能促进组织沿着生成式 AI 学习曲线前进&#xff0c;建立早期的创新领导者和…

问题:银行账号建立以后,一般需要维护哪些设置,不包括() #学习方法#经验分享

问题&#xff1a;银行账号建立以后&#xff0c;一般需要维护哪些设置&#xff0c;不包括&#xff08;&#xff09; A&#xff0e;维护结算科目对照 B&#xff0e;期初余额初始化刷 C&#xff0e;自定义转账定义 D&#xff0e;对账单初始化 参考答案如图所示

中小型网络系统总体规划与设计方法

目录 1.基于网络的信息系统基本结构 2.网络需求调研与系统设计原则 3.网络用户调查 4.网络节点地理位置分布情况 5.网络需求详细分析 6.应用概要分析 7.网络工程设计总体目标与设计原则 8.网络结构与拓扑构型设计方法 9.核心层网络结构设计 10.接入核心路由器 11.汇聚…

Python进程之并行与并发的区别

并行 : 当系统有一个以上CPU时&#xff0c;则进程的操作有可能非并发。当一个CPU执行一个进程时&#xff0c;另一个CPU可以执行另一个进程&#xff0c;两个进程互不抢占CPU资源&#xff0c;可以同时进行&#xff0c;这种方式我们称之为并行。 并发 : 当有多个进程在操作时&…

【LeetCode】332. 重新安排行程(困难)——代码随想录算法训练营Day30

题目链接&#xff1a;332. 重新安排行程 题目描述 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&#xff09;出发的先生&a…

在Python中执行Linux Shell脚本详解

概要 随着 Python 的增长和普及,目前它已经成为自动化各种任务,包括执行 shell 脚本的主要工具。这篇文章将详细描述如何在 Python 中执行 shell 脚本,并提供丰富的示例帮助你理解和实践。 什么是Shell脚本? Shell脚本是一个由命令行解释器执行的文本文件。这些脚本包含控…

政安晨:快速学会~机器学习的Pandas数据技能(四)(汇总与映射)

从数据中提取价值&#xff01; 概述 在上一篇文章中&#xff0c;我们学习了如何从DataFrame或Series中选择相关数据。从我们的数据表示中选择正确的数据对于完成工作非常重要&#xff0c;正如我们在练习中所演示的那样。 然而&#xff0c;数据并不总是以我们想要的格式直接从…

PgSQL技术内幕 - case when表达式实现机制

PgSQL技术内幕 - case when表达式实现机制 CASE表达式如同 C语言中的if/else语句一样&#xff0c;为SQL添加了条件逻辑处理能力&#xff0c;可以根据不同条件返回不同结果。PgSQL支持两种语法&#xff1a;简单表达式和搜索表达式。 1、搜索表达式 语法如下&#xff1a; CASE WH…

2023年第四季度硬盘容量强势增长9%

在2023年第四季度&#xff08;CQ4 23&#xff09;&#xff0c;硬盘驱动器&#xff08;HDD&#xff09;市场的总容量出货量环比增长9%&#xff0c;达到214EB&#xff0c;而单位出货量保持在2900万块不变。其中&#xff0c;近线存储&#xff08;Nearline&#xff09;硬盘的容量出…

手写babel插件-第一讲

终于可以写babel系列的文章了。芜湖&#xff5e;&#xff5e; 到目前为止&#xff0c;我编程道路上的每个阶段都有主动去接触babel&#xff0c;每个阶段也都有不一样的感受。大学的时候&#xff0c;babel与webpack傻傻分不清&#xff1b;工作一年的时候&#xff0c;清醒的知道…

猫头虎分享:关闭Windows自动更新的6种方法 ‍

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

代码随想录算法训练营day14||二叉树part01、理论基础、递归遍历、迭代遍历、统一迭代

递归遍历 &#xff08;必须掌握&#xff09; 本篇将介绍前后中序的递归写法&#xff0c;一些同学可能会感觉很简单&#xff0c;其实不然&#xff0c;我们要通过简单题目把方法论确定下来&#xff0c;有了方法论&#xff0c;后面才能应付复杂的递归。 这里帮助大家确定下来递归…

Huggingface上传模型

Huggingface上传自己的模型 参考 https://juejin.cn/post/7081452948550746148https://huggingface.co/blog/password-git-deprecationAdding your model to the Hugging Face Hub&#xff0c; huggingface.co/docs/hub/ad…Welcome&#xff0c;huggingface.co/welcome三句指…

【网络攻防实验】【北京航空航天大学】【实验一、入侵检测系统(Intrusion Detection System, IDS)实验】

实验一、入侵检测系统实验 1、 虚拟机准备 本次实验使用1台 Kali Linux 虚拟机和1台 Windows XP 虚拟机,虚拟化平台选择 Oracle VM VirtualBox,如下图所示。 2、 Snort环境搭建 实验前,先确保Kali Linux虚拟机能够访问外网,将网络模式设置为“网络地址转换”: 2.1 安装…