• 阿里声音项目Qwen2-Audio的部署安装,在服务器Ubuntu22.04系统——点动科技

阿里声音项目Qwen2-Audio的部署安装,在服务器Ubuntu22.04系统——点动科技

2025-04-29 14:00:13 0 阅读

阿里声音项目Qwen2-Audio的部署安装,在服务器Ubuntu22.04系统——点动科技

  • 一、ubuntu22.04基本环境配置
      • 1.1 更换清华Ubuntu镜像源
      • 1.2 更新包列表:
      • 2. 安装英伟达显卡驱动
          • 2.1 使用wget在命令行下载驱动包
          • 2.2 更新软件列表和安装必要软件、依赖
          • 2.2 卸载原有驱动
          • 2.3 安装驱动
          • 2.4 安装CUDA
          • 2.5 环境变量配置
  • 二、安装miniconda环境
      • 1. 下载miniconda3
      • 2. 安装miniconda3
      • 3. 切换到bin文件夹
      • 4. 输入pwd获取路径
      • 5. 打开用户环境编辑页面
      • 6. 重新加载用户环境变量
      • 7. 初始化conda
      • 8.验证是否安装成功
      • 9.conda配置
  • 三、安装Qwen2-Audio
      • 1.克隆仓库
          • 1.1 github克隆
          • 1.2 国内github镜像克隆
          • 1.3. 进入目录
      • 2.创建虚拟环境
          • 2.1 进入虚拟环境
      • 3. 安装依赖
          • 3.1设置清华源、更新pip
          • 3.2安装torch 12.4cuda版本
          • 3.3安装依赖文件
          • 3.4安装webui界面及其他未安装依赖
          • 3.5安装魔搭库准备下载模型文件:
          • 3.6下载相关模型
          • 3.7执行代码,启动webui界面
          • 3.8加入声音驱动,实现真正的语音聊天
  • 四、成功实现语音交互
        • 4.1 找不到录音机问题

一、ubuntu22.04基本环境配置

1.1 更换清华Ubuntu镜像源

  • 删除原来的文件
rm /etc/apt/sources.list
  • 开始编辑新文件
vim /etc/apt/sources.list
  • 先按i键,粘贴以下内容
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

  • 确保内容跟上述图片一致

  • 按esc键,再输入冒号+wq保存

1.2 更新包列表:

  • 打开终端,输入以下命令:
sudo apt-get update
sudo apt upgrade
  • 更新时间较长,请耐心等待

2. 安装英伟达显卡驱动

2.1 使用wget在命令行下载驱动包
wget https://cn.download.nvidia.com/XFree86/Linux-x86_64/550.100/NVIDIA-Linux-x86_64-550.100.run

2.2 更新软件列表和安装必要软件、依赖
sudo apt-get install g++


点击回车enter即可

sudo apt-get install gcc

sudo apt-get install make



点击回车enter即可

成功安装

2.2 卸载原有驱动
sudo apt-get remove --purge nvidia* 

  • 1.使用vim修改配置文件
sudo vim /etc/modprobe.d/blacklist.conf
  • 2.按i键进入编辑模式,在文件尾增加两行:
blacklist nouveau
options nouveau modeset=0

  • 3.按esc键退出编辑模式,输入:wq保存并退出

  • 4.更新文件

sudo update-initramfs -u

这里等待时间较久

  • 5.重启电脑:
sudo reboot

这里需要等一会才能连上

2.3 安装驱动
  • 1.授予执行权限
sudo chmod 777 NVIDIA-Linux-x86_64-550.100.run
  • 2.执行安装命令
sudo ./NVIDIA-Linux-x86_64-550.100.run

这里一直按回车就行,默认选择

一直按回车enter键,直到安装成功

  • 3.检测显卡驱动是否安装成功
nvidia-smi

2.4 安装CUDA
wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run

执行安装命令

sudo sh ./cuda_12.4.0_550.54.14_linux.run
  • 1.输出accept开始安装

  • 2.然后注意这里要按enter取消勾选第一个选项,因为之前已经安装了驱动

  • 3.接着选择Install开始安装

  • 4.安装完成

2.5 环境变量配置
  • 1.以vim方式打开配置文件
sudo vim ~/.bashrc
  • 2.按i键进入编辑模式,在文件尾增加下面内容:
export PATH="/usr/local/cuda-12.4/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH"

  • 按esc键退出编辑模式,输入:wq保存并退出

  • 3.更新环境变量

source ~/.bashrc
  • 4.检测CUDA是否安装成功
nvcc -V

二、安装miniconda环境

1. 下载miniconda3

wget https://mirrors.cqupt.edu.cn/anaconda/miniconda/Miniconda3-py310_23.10.0-1-Linux-x86_64.sh

2. 安装miniconda3

bash Miniconda3-py310_23.10.0-1-Linux-x86_64.sh -u

直接一直enter键,到输入路径和yes

这边建议路径为:miniconda3

直接回车enter即可,再次输入yes

成功安装

3. 切换到bin文件夹

cd miniconda3/bin/

4. 输入pwd获取路径

pwd

复制这里的路径

5. 打开用户环境编辑页面

vim ~/.bashrc 
  • 点击键盘I键进入编辑模式,在最下方输入以下代码
export PATH="/root/miniconda3/bin:$PATH"

按esc键退出编辑模式,输入:wq保存并退出

6. 重新加载用户环境变量

source ~/.bashrc

7. 初始化conda

conda init bash

8.验证是否安装成功

conda -V

9.conda配置

  • 1.配置清华镜像源

    代码如下:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

  • 2.设置搜索时显示通道地址
conda config --set show_channel_urls yes

  • 3.配置pip 镜像源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

三、安装Qwen2-Audio

1.克隆仓库

1.1 github克隆
git clone https://github.com/QwenLM/Qwen2-Audio.git
1.2 国内github镜像克隆
git clone https://mirror.ghproxy.com/https://github.com/QwenLM/Qwen2-Audio.git
1.3. 进入目录
cd Qwen2-Audio/

2.创建虚拟环境

conda create -n qwen2 python=3.10

  • 输入y回车即可
2.1 进入虚拟环境
conda activate qwen2

3. 安装依赖

3.1设置清华源、更新pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

python -m pip install --upgrade pip
3.2安装torch 12.4cuda版本
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

3.3安装依赖文件
cd demo
pip install -r requirements_web_demo.txt
3.4安装webui界面及其他未安装依赖
pip install librosa
pip install --upgrade "accelerate>=0.21.0"
pip install django
pip install git+https://mirror.ghproxy.com/https://github.com/huggingface/transformers
3.5安装魔搭库准备下载模型文件:
pip install modelscope
3.6下载相关模型
cd ..
modelscope download --model qwen/qwen2-audio-7b-instruct --local_dir './Qwen/Qwen2-Audio-7B-Instruct'
3.7执行代码,启动webui界面
  • 改端口
vim demo/web_demo_audio.py

按i进行编辑,完成后再按esc,冒号,wq退出

  • 成功进入

3.8加入声音驱动,实现真正的语音聊天
cd demo
  • 创建一个新的webui界面的文件
touch test_audio.py
vim test_audio.py

输入以下内容

import gradio as gr
import modelscope_studio as mgr
import librosa
from transformers import AutoProcessor, Qwen2AudioForConditionalGeneration
from argparse import ArgumentParser
import requests
import os
from django.http import HttpResponse

# 默认的模型检查点路径
DEFAULT_CKPT_PATH = 'Qwen/Qwen2-Audio-7B-Instruct'

def text_to_speech(text2):
    data = {
        "text": text2,
        "text_language": "zh",
    }
    # 注意 URL 中的单引号应该是 URL 的一部分,需要正确转义
    response = requests.post('http://服务器IP:端口', json=data)
    
    if response.status_code == 200:
        audio_file_path = "/root/project/Qwen2-Audio/demo/output.mp3"
        with open(audio_file_path, "wb") as f:
            f.write(response.content)
        return audio_file_path
    else:
        print(f"错误:请求失败,状态码为 {response.status_code}")
        return None

def _get_args():
    """
    解析命令行参数,获取运行配置。

    返回:
        argparse.Namespace: 包含命令行参数的命名空间对象。
    """
    parser = ArgumentParser()
    parser.add_argument("-c", "--checkpoint-path", type=str, default=DEFAULT_CKPT_PATH,
                        help="Checkpoint name or path, default to %(default)r")  # 模型检查点路径
    parser.add_argument("--cpu-only", action="store_true", help="Run demo with CPU only")  # 是否仅使用CPU
    parser.add_argument("--inbrowser", action="store_true", default=False,
                        help="Automatically launch the interface in a new tab on the default browser.")  # 是否在浏览器中自动打开界面
    parser.add_argument("--server-port", type=int, default=15110,
                        help="Demo server port.")  # 指定服务器端口
    parser.add_argument("--server-name", type=str, default="0.0.0.0",
                        help="Demo server name.")  # 指定服务器名称

    args = parser.parse_args()
    return args

def add_text(chatbot, task_history, input):
    """
    将用户输入的文本内容添加到聊天记录中,并更新聊天机器人界面。

    参数:
        chatbot (gr.components.Chatbot): 聊天机器人组件。
        task_history (list): 任务历史记录。
        input (gr.inputs): 用户输入内容。

    返回:
        tuple: 更新后的聊天机器人界面和任务历史记录,以及重置后的用户输入框。
    """
    text_content = input.text  # 获取文本输入内容
    content = []
    if len(input.files) > 0:  # 如果用户上传了音频文件
        for i in input.files:
            content.append({'type': 'audio', 'audio_url': i.path})  # 将音频文件添加到内容列表中
    if text_content:  # 如果用户输入了文本
        content.append({'type': 'text', 'text': text_content})  # 将文本内容添加到内容列表中
    task_history.append({"role": "user", "content": content})  # 更新任务历史记录

    # 更新聊天机器人界面,添加用户输入
    chatbot.append([{
        "text": input.text,
        "files": input.files,
    }, None])
    return chatbot, task_history, None
'''
def add_file(chatbot, task_history, audio_file_path):
    """
    将音频文件添加到聊天记录中。

    参数:
        chatbot (gr.components.Chatbot): 聊天机器人组件。
        task_history (list): 任务历史记录。
        audio_file_path (str): 音频文件的路径。

    返回:
        tuple: 更新后的聊天机器人界面和任务历史记录。
    """
    # 确保任务历史记录中的音频条目是正确的格式
    task_history.append({"role": "user", "content": [{"type": "audio", "audio_url": audio_file_path}]})
    
    # 更新聊天记录,直接使用 audio_file_path 而不是 gr.Audio 组件
    chatbot.append((None, {"type": "audio", "audio_url": audio_file_path}))

    return chatbot, task_history
'''
import os

def add_file(chatbot, task_history, audio_path):
    if not os.path.isfile(audio_path):
        print(f"Error: The file {audio_path} does not exist.")
        return chatbot, task_history

    # 将音频文件信息添加到任务历史
    task_history.append({
        "role": "user",
        "content": [{"type": "audio", "audio_url": audio_path}]
    })

    # 假设 chatbot 组件可以接受字典格式的输入
    chatbot_state = [{
        "text": f"[Audio file: {os.path.basename(audio_path)}]",
        "files": [audio_path]  # 直接使用文件路径而不是 gr.File
    }, None]
    chatbot.append(chatbot_state)  # 更新 chatbot 状态

    return chatbot, task_history

def reset_user_input():
    """
    重置用户输入字段。

    返回:
        gr.update: 将文本框的值重置为空。
    """
    return gr.Textbox.update(value='')

def reset_state(task_history):
    """
    重置聊天记录和任务历史。

    参数:
        task_history (list): 当前的任务历史记录。

    返回:
        tuple: 清空的聊天记录和任务历史。
    """
    return [], []

def regenerate(chatbot, task_history):
    """
    重新生成最后的机器人响应。

    参数:
        chatbot (gr.components.Chatbot): 聊天机器人组件。
        task_history (list): 任务历史记录。

    返回:
        tuple: 更新后的聊天机器人界面和任务历史记录。
    """
    # 如果最后一条消息是助手生成的,则移除它
    if task_history and task_history[-1]['role'] == 'assistant':
        task_history.pop()
        chatbot.pop()
    # 如果任务历史记录不为空,重新生成响应
    if task_history:
        chatbot, task_history = predict(chatbot, task_history)
    return chatbot, task_history

def predict(chatbot, task_history):
    """
    根据当前任务历史记录生成模型响应,并将响应转换为音频文件添加到聊天记录中。

    参数:
        chatbot (gr.components.Chatbot): 聊天机器人组件。
        task_history (list): 任务历史记录。

    返回:
        tuple: 更新后的聊天机器人界面和任务历史记录。
    """
    print(f"{task_history=}")
    print(f"{chatbot=}")

    # 使用处理器将任务历史记录格式化为模型输入
    text = processor.apply_chat_template(task_history, add_generation_prompt=True, tokenize=False)
    audios = []

    # 遍历任务历史,查找音频内容并加载
    for message in task_history:
        if isinstance(message["content"], list):
            for ele in message["content"]:
                if ele["type"] == "audio":
                    audios.append(
                        librosa.load(ele['audio_url'], sr=processor.feature_extractor.sampling_rate)[0]
                    )

    if len(audios) == 0:  # 如果没有音频,则设置为 None
        audios = None
    print(f"{text=}")
    print(f"{audios=}")

    # 使用处理器生成模型输入
    inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True)
    if not _get_args().cpu_only:  # 如果支持 GPU,则将输入数据移动到 CUDA 设备
        inputs["input_ids"] = inputs.input_ids.to("cuda")

    # 生成响应
    generate_ids = model.generate(**inputs, max_length=256)
    generate_ids = generate_ids[:, inputs.input_ids.size(1):]

    # 解码生成的文本响应
    # 假设其他参数已经正确设置
    response = processor.batch_decode(generate_ids, skip_special_tokens=True)[0]
    task_history.append({'role': 'assistant', 'content': response})
    chatbot.append((None, response))  # 添加文本响应

    # 将文本响应转换为语音
    audio_file_path = text_to_speech(response)
    if audio_file_path:
        chatbot, task_history = add_file(chatbot, task_history, audio_file_path)

    return chatbot, task_history

def _launch_demo(args):
    """
    启动Gradio的Web用户界面,展示Qwen2-Audio-Instruct模型的聊天功能。

    参数:
        args (argparse.Namespace): 从命令行解析的参数。
    """
    with gr.Blocks() as demo:
        # 添加页面标题和描述
        gr.Markdown(
            """

""") gr.Markdown("""

Qwen2-Audio-Instruct Bot
""") gr.Markdown( """
This WebUI is based on Qwen2-Audio-Instruct, developed by Alibaba Cloud. (本WebUI基于Qwen2-Audio-Instruct打造,实现聊天机器人功能。)
""") gr.Markdown("""
Qwen2-Audio 🤖 | 🤗  | Qwen2-Audio-Instruct 🤖 | 🤗  |  Github
""") # 创建聊天机器人组件 chatbot = mgr.Chatbot(label='Qwen2-Audio-7B-Instruct', elem_classes="control-height", height=750) # 创建用户输入组件,支持文本、麦克风和文件上传 user_input = mgr.MultimodalInput( interactive=True, sources=['microphone', 'upload'], submit_button_props=dict(value="🚀 Submit (发送)"), upload_button_props=dict(value="📁 Upload (上传文件)", show_progress=True), ) task_history = gr.State([]) # 初始化任务历史状态 with gr.Row(): # 创建清除历史和重试按钮 empty_bin = gr.Button("🧹 Clear History (清除历史)") regen_btn = gr.Button("🤔️ Regenerate (重试)") # 当用户提交输入时,调用add_text函数,然后调用predict函数生成响应 user_input.submit(fn=add_text, inputs=[chatbot, task_history, user_input], outputs=[chatbot, task_history, user_input]).then( predict, [chatbot, task_history], [chatbot, task_history], show_progress=True ) # 清除历史按钮的点击事件处理,重置聊天记录和任务历史 empty_bin.click(reset_state, outputs=[chatbot, task_history], show_progress=True) # 重试按钮的点击事件处理,重新生成最后的响应 regen_btn.click(regenerate, [chatbot, task_history], [chatbot, task_history], show_progress=True) # 启动Gradio界面 demo.queue().launch( share=False, # 不共享URL inbrowser=args.inbrowser, # 是否自动在浏览器中打开 server_port=args.server_port, # 指定服务器端口 server_name=args.server_name, # 指定服务器名称 ssl_certfile="/root/project/cert.pem", ssl_keyfile="/root/project/key.pem", ssl_verify=False ) if __name__ == "__main__": args = _get_args() # 获取命令行参数 if args.cpu_only: device_map = "cpu" # 如果指定了仅使用CPU,设置设备映射为CPU else: device_map = "auto" # 否则自动选择设备 # 加载模型 model = Qwen2AudioForConditionalGeneration.from_pretrained( args.checkpoint_path, torch_dtype="auto", # 自动选择数据类型 device_map=device_map, # 设置设备映射 resume_download=True, # 断点续传 ).eval() model.generation_config.max_new_tokens = 2048 # 设置最大生成token数,用于长对话 print("generation_config", model.generation_config) processor = AutoProcessor.from_pretrained(args.checkpoint_path, resume_download=True) # 加载处理器 _launch_demo(args) # 启动演示界面
  • 运行上面代码之前先到4.1配置ssl

四、成功实现语音交互

4.1 找不到录音机问题
  • 创建ssl
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -nodes

一直按enter键默认选择即可

  • 修改launch
vim demo/web_demo_audio.py

加入ssl参数,注意替换路径

demo.queue().launch(
        share=False,  # 不共享URL
        inbrowser=args.inbrowser,  # 是否自动在浏览器中打开
        server_port=args.server_port,  # 指定服务器端口
        server_name=args.server_name,  # 指定服务器名称
        ssl_certfile="/root/project/cert.pem", 
        ssl_keyfile="/root/project/key.pem", 
        ssl_verify=False
    )

  • 运行以下代码启动
python demo/web_demo_audio.py
  • 注意用https访问
https://服务器ip:端口

报错合集:
==1. ==
raise PydanticSchemaGenerationError(
pydantic.errors.PydanticSchemaGenerationError: Unable to generate pydantic-core schema for . Set arbitrary_types_allowed=True in the model_config to ignore this error or implement __get_pydantic_core_schema__ on your type to fully support it.
If you got this error by calling handler() within __get_pydantic_core_schema__ then you likely need to call handler.generate_schema() since we do not call __get_pydantic_core_schema__ on otherwise to avoid infinite recursion.

For further information visit https://errors.pydantic.dev/2.9/u/schema-for-unknown-type

这是一个 Pydantic 相关的错误,主要是因为 FastAPI 和 Gradio 的版本兼容性问题。具体原因是 Starlette Request 对象无法被 Pydantic 正确序列化。问题主要出在 Gradio 和 Pydantic 的版本兼容性上

第一- 在代码中添加配置类:

import gradio as gr
import modelscope_studio as mgr
import librosa
from transformers import AutoProcessor, Qwen2AudioForConditionalGeneration
from argparse import ArgumentParser
from pydantic import BaseModel

# 添加这个配置类
class ModelConfig(BaseModel):
    class Config:
        arbitrary_types_allowed = True

# 在 _launch_demo 函数开始处添加以下代码
def _launch_demo(args):
    gr.Config = ModelConfig  # 设置 Gradio 使用这个配置
    with gr.Blocks() as demo:
        # 其余代码保持不变

第二升级 Gradio 版本

pip install --upgrade gradio==4.44.1

2.
freqs = (inv_freq_expanded.float() @ position_ids_expanded.float()).transpose(1, 2)
RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu! (when checking argument for argument mat2 in method wrapper_CUDA_bmm)

从错误日志来看,这是一个设备不匹配的问题。错误发生在运行 Qwen2-Audio 模型时,具体错误信息指出张量存在于不同设备(CUDA:0 和 CPU)上。

需要修改的是 predict 函数中的设备处理逻辑
主要修改内容:
获取模型当前所在的设备
将所有输入张量移到同一设备上
使用更安全的设备转移方式

def predict(chatbot, task_history):
    """Generate a response from the model."""
    print(f"{task_history=}")
    print(f"{chatbot=}")
    text = processor.apply_chat_template(task_history, add_generation_prompt=True, tokenize=False)
    audios = []
    for message in task_history:
        if isinstance(message["content"], list):
            for ele in message["content"]:
                if ele["type"] == "audio":
                    audios.append(
                        librosa.load(ele['audio_url'], sr=processor.feature_extractor.sampling_rate)[0]
                    )

    if len(audios)==0:
        audios=None
    print(f"{text=}")
    print(f"{audios=}")
    
    # 获取模型所在设备
    device = next(model.parameters()).device
    
    # 处理输入数据
    inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True)
    
    # 将所有张量移到正确的设备上
    inputs = {k: v.to(device) if hasattr(v, 'to') else v for k, v in inputs.items()}

    generate_ids = model.generate(**inputs, max_length=256)
    generate_ids = generate_ids[:, inputs['input_ids'].size(1):]

    response = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
    print(f"{response=}")
    task_history.append({'role': 'assistant',
                         'content': response})
    chatbot.append((None, response))
    return chatbot, task_history

另外,在主程序部分也建议做以下修改:

if __name__ == "__main__":
    args = _get_args()
    if args.cpu_only:
        device_map = "cpu"
    else:
        device_map = "auto"
        
    # 设置默认设备
    import torch
    device = torch.device("cuda" if torch.cuda.is_available() and not args.cpu_only else "cpu")
    
    # 加载模型
    model = Qwen2AudioForConditionalGeneration.from_pretrained(
        args.checkpoint_path,
        torch_dtype=torch.float16 if device.type == "cuda" else torch.float32,  # 根据设备选择数据类型
        device_map=device_map,
        resume_download=True,
    ).eval()
    
    print(f"Model device: {next(model.parameters()).device}")
    model.generation_config.max_new_tokens = 2048
    print("generation_config", model.generation_config)
    
    processor = AutoProcessor.from_pretrained(args.checkpoint_path, resume_download=True)
    _launch_demo(args)

本文地址:https://www.vps345.com/5574.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 javascript 前端 chrome edge python MCP 进程 操作系统 进程控制 Ubuntu ssh 阿里云 网络 网络安全 网络协议 llama 算法 opencv 自然语言处理 神经网络 语言模型 deepseek Ollama 模型联网 API CherryStudio ubuntu harmonyos 华为 开发语言 typescript 计算机网络 数据库 centos oracle 关系型 安全 分布式 fastapi mcp mcp-proxy mcp-inspector fastapi-mcp agent sse 深度学习 YOLO 目标检测 计算机视觉 人工智能 adb nginx 监控 自动化运维 django flask web3.py numpy Hyper-V WinRM TrustedHosts github 创意 社区 tcp/ip RTSP xop RTP RTSPServer 推流 视频 flutter rust http java react.js 前端面试题 node.js 持续部署 macos 科技 ai 个人开发 udp unity ssl ollama llm php android Dell R750XS 笔记 C 环境变量 进程地址空间 pycharm ide pytorch 银河麒麟服务器操作系统 系统激活 bash kubernetes VMware安装Ubuntu Ubuntu安装k8s k8s mysql离线安装 ubuntu22.04 mysql8.0 sqlserver sql KingBase c++ c语言 docker uni-app intellij-idea 自动化 openEuler 银河麒麟 kylin v10 麒麟 v10 LDAP mysql Qwen2.5-coder 离线部署 spring boot websocket 后端 tomcat postman mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 android studio 交互 HCIE 数通 大模型微调 maven intellij idea 腾讯云 vscode 代码调试 ipdb 实时音视频 filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 asm 机器学习 Docker Compose docker compose docker-compose dubbo gateway Clion Nova ResharperC++引擎 Centos7 远程开发 运维开发 json html5 firefox 容器 kamailio sip VoIP windows conda pillow 串口服务器 统信 国产操作系统 虚拟机安装 .net 蓝耘科技 元生代平台工作流 ComfyUI 架构 学习方法 经验分享 程序人生 golang gitlab 面试 性能优化 jdk springsecurity6 oauth2 授权服务器 token sas DeepSeek-R1 API接口 多线程服务器 Linux网络编程 live555 rtsp rtp rabbitmq visualstudio prometheus YOLOv12 AI 爬虫 数据集 jenkins gitee WSL win11 无法解析服务器的名称或地址 vim DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 apache 开源 Cline web安全 Kali Linux 黑客 渗透测试 信息收集 搜索引擎 Deepseek 云原生 ffmpeg 音视频 c# Flask FastAPI Waitress Gunicorn uWSGI Uvicorn 嵌入式硬件 单片机 温湿度数据上传到服务器 Arduino HTTP kvm 无桌面 命令行 媒体 微信公众平台 嵌入式 linux驱动开发 arm开发 matlab YOLOv8 NPU Atlas800 A300I pro asi_bench 博客 mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 ecm bpm ollama下载加速 大模型 spring ddos qt stm32项目 stm32 系统开发 binder 车载系统 framework 源码环境 zotero WebDAV 同步失败 代理模式 ansible playbook 智能路由器 dell服务器 go IIS .net core Hosting Bundle .NET Framework vs2022 es jvm AI编程 集成学习 集成测试 .netcore html oceanbase rc.local 开机自启 systemd 麒麟 elasticsearch kylin 深度优先 图论 并集查找 换根法 树上倍增 前端框架 chatgpt llama3 Chatglm 开源大模型 ESP32 低代码 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 vue.js audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 nuxt3 vue3 jmeter 软件测试 java-ee AIGC 国标28181 视频监控 监控接入 语音广播 流程 SIP SDP 其他 XCC Lenovo r语言 数据挖掘 数据可视化 数据分析 软件工程 华为云 远程工作 算力 gpu算力 git alias unalias 别名 unix 机器人 googlecloud cnn GoogLeNet npm TCP服务器 qt项目 qt项目实战 qt教程 muduo 小程序 弹性计算 虚拟化 KVM 计算虚拟化 弹性裸金属 僵尸进程 list 数据结构 skynet 物联网 windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 根服务器 clickhouse eureka 安全架构 学习 5G 3GPP 卫星通信 WSL2 社交电子 embedding 监控k8s集群 集群内prometheus EMQX MQTT 通信协议 vmware 卡死 laravel grafana 直流充电桩 充电桩 spring cloud IPMI centos-root /dev/mapper yum clean all df -h / du -sh openwrt 负载均衡 junit ESXi 京东云 漏洞 kind 宝塔面板 同步 备份 建站 LORA 大语言模型 NLP hive Hive环境搭建 hive3环境 Hive远程模式 安全威胁分析 阻塞队列 生产者消费者模型 服务器崩坏原因 vscode 1.86 网络穿透 云服务器 redis Nuxt.js SSH Linux Xterminal bug 豆瓣 追剧助手 迅雷 nas 微信 内存 裸金属服务器 弹性裸金属服务器 flash-attention 报错 express p2p 大数据 unity3d 编辑器 缓存 okhttp CORS 跨域 wireshark 显示过滤器 安装 ICMP Wireshark安装 电脑 游戏机 https dns zabbix AI大模型 DeepSeek 程序员 大模型入门 HTTP 服务器控制 ESP32 DeepSeek aws linux环境变量 服务器繁忙 备选 网站 api 调用 示例 AD域 反向代理 致远OA OA服务器 服务器磁盘扩容 服务器主板 AI芯片 信息与通信 dify 飞牛NAS 飞牛OS MacBook Pro Dify microsoft rpc 软件需求 C语言 Ubuntu Server Ubuntu 22.04.5 vasp安装 边缘计算 智能硬件 消息队列 鸿蒙 AutoDL arm VMware创建虚拟机 业界资讯 模拟退火算法 pip tidb GLIBC code-server 内网穿透 mosquitto 外网访问 端口映射 word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 postgresql 计算机 视觉检测 华为od sqlite 华为认证 网络工程师 交换机 MS Materials Reactor 设计模式 C++ openssl 密码学 课程设计 shell TRAE 大数据平台 银河麒麟高级服务器 外接硬盘 Kylin 国产化 Windsurf flink debian 华为机试 Java Python nac 802.1 portal 数据库系统 硬件架构 AISphereButler kafka hibernate armbian u-boot 大模型教程 webrtc remote-ssh ukui 麒麟kylinos openeuler rust腐蚀 微服务 框架搭建 游戏程序 jar 回显服务器 UDP的API使用 ruoyi springboot ftp web 火绒安全 VPS ci/cd 需求分析 规格说明书 gradle ceph 微信小程序 RustDesk自建服务器 rustdesk服务器 docker rustdesk opensearch helm 雨云 NPS 飞书 JAVA IDEA 孤岛惊魂4 WebRTC gpt uniapp vue 文件系统 路径解析 恒源云 tcp vscode1.86 1.86版本 ssh远程连接 tcpdump 深度求索 私域 知识库 vSphere vCenter 软件定义数据中心 sddc RTMP 应用层 jupyter big data camera Arduino 电子信息 opcua opcda KEPServer安装 oneapi Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 open webui 数据库架构 数据管理 数据治理 数据编织 数据虚拟化 Agent idm echarts ui MacOS录屏软件 ios 传统数据库升级 银行 LLMs 单一职责原则 vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 网络编程 聊天服务器 套接字 TCP 客户端 Socket mongodb 企业微信 Linux24.04 deepin IPMITOOL BMC 硬件管理 1024程序员节 鲲鹏 FTP 服务器 系统安全 Headless Linux 目标跟踪 OpenVINO 推理应用 计算机外设 pdf asp.net大文件上传 asp.net大文件上传下载 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 中间件 iis VSCode 移动云 云服务 可信计算技术 服务器数据恢复 数据恢复 存储数据恢复 raid5数据恢复 磁盘阵列数据恢复 自定义客户端 SAS 医疗APP开发 app开发 僵尸世界大战 游戏服务器搭建 银河麒麟操作系统 zookeeper 服务器部署ai模型 部署 SSL 域名 rsyslog Anolis nginx安装 环境安装 linux插件下载 v10 镜像源 软件 Trae IDE AI 原生集成开发环境 Trae AI 3d 测试工具 mcu 驱动开发 硬件工程 嵌入式实习 状态管理的 UDP 服务器 Arduino RTOS URL 交叉编译 本地部署 架构与原理 pyqt 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 Kylin-Server 服务器安装 多个客户端访问 IO多路复用 TCP相关API 技术共享 EasyConnect 多进程 系统架构 ecmascript nextjs react reactjs GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 黑客技术 流式接口 网工 职场和发展 压测 ECS ssrf 失效的访问控制 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 MI300x ux 多线程 SSE open Euler dde 统信UOS SysBench 基准测试 LLM Web APP Streamlit firewalld hadoop mybatis svn xrdp 远程桌面 远程连接 string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap 游戏服务器 TrinityCore 魔兽世界 开发环境 SSL证书 sysctl.conf vm.nr_hugepages protobuf 序列化和反序列化 adobe elk fpga开发 virtualenv 能力提升 面试宝典 技术 IT信息化 崖山数据库 YashanDB 视频编解码 源码剖析 rtsp实现步骤 流媒体开发 Dell HPE 联想 浪潮 Ubuntu 24.04.1 轻量级服务器 NFS redhat mac 群晖 文件分享 自动化测试 性能测试 功能测试 prompt easyui langchain odoo 服务器动作 Server action 雨云服务器 相差8小时 UTC 时间 netty 远程控制 远程看看 远程协助 远程过程调用 Windows环境 技能大赛 直播推流 wsl2 wsl cpu 实时 使用 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 毕设 midjourney AI写作 xml FTP服务器 selete 高级IO yum 智能手机 矩阵 gitea risc-v 剧本 佛山戴尔服务器维修 佛山三水服务器维修 ipython 命令 三级等保 服务器审计日志备份 css 微信分享 Image wxopensdk 联想开天P90Z装win10 重启 排查 系统重启 日志 原因 Invalid Host allowedHosts 工业4.0 VMware安装mocOS VMware macOS系统安装 策略模式 单例模式 干货分享 黑客工具 密码爆破 bootstrap 进程信号 软考 C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 agi 宕机切换 服务器宕机 网站搭建 serv00 bonding 链路聚合 压力测试 执法记录仪 智能安全帽 smarteye 远程登录 telnet tailscale derp derper 中转 线性代数 电商平台 cursor MCP server C/S LLM excel windows日志 transformer Docker Hub docker pull daemon.json Minecraft DOIT 四博智联 Unity Dedicated Server Host Client 无头主机 MacMini Mac 迷你主机 mini Apple 宠物 毕业设计 免费学习 宠物领养 宠物平台 产品经理 CPU 主板 电源 网卡 PVE WebUI DeepSeek V3 thingsboard 权限 Linux PID H3C iDRAC R720xd 命名管道 客户端与服务端通信 freebsd 前后端分离 VR手套 数据手套 动捕手套 动捕数据手套 minicom 串口调试工具 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 XFS xfs文件系统损坏 I_O error 半虚拟化 硬件虚拟化 Hypervisor HarmonyOS Next 磁盘监控 iot micropython esp32 mqtt 数学建模 网络结构图 服务器配置 生物信息学 7z FunASR ASR 输入法 av1 电视盒子 机顶盒ROM 魔百盒刷机 file server http server web server 田俊楠 X11 Xming minio rdp 实验 王者荣耀 Wi-Fi DNS Spring Security 远程 执行 sshpass 操作 Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 UOS 统信操作系统 W5500 OLED u8g2 chfs ubuntu 16.04 ISO镜像作为本地源 Open WebUI 云电竞 云电脑 todesk chrome devtools selenium chromedriver 硬件 设备 GPU PCI-Express jetty undertow 音乐服务器 Navidrome 音流 ping++ NAS Termux Samba Erlang OTP gen_server 热代码交换 事务语义 Cursor MNN Qwen ip 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 pppoe radius hugo Netty 即时通信 NIO SWAT 配置文件 服务管理 网络共享 gaussdb 语法 银河麒麟桌面操作系统 Kylin OS DeepSeek行业应用 Heroku 网站部署 xss 向日葵 c ocr AI agent 思科模拟器 思科 Cisco 安装教程 GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 北亚数据恢复 oracle数据恢复 saltstack 测试用例 AI作画 IIS服务器 IIS性能 日志监控 next.js 部署next.js QQ 聊天室 系统 黑苹果 虚拟机 pygame 小游戏 五子棋 prometheus数据采集 prometheus数据模型 prometheus特点 safari 相机 历史版本 下载 金仓数据库 2025 征文 数据库平替用金仓 繁忙 解决办法 替代网站 汇总推荐 AI推理 visual studio code CDN Radius dba DevEco Studio firewall cuda cudnn nvidia 无人机 HAProxy 混合开发 JDK wsgiref Web 服务器网关接口 regedit 开机启动 信号处理 edge浏览器 物联网开发 IM即时通讯 剪切板对通 HTML FORMAT 网络药理学 生信 gromacs 分子动力学模拟 MD 动力学模拟 devops 源码 USB网络共享 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 less docker run 数据卷挂载 交互模式 考研 onlyoffice 在线office SEO MVS 海康威视相机 浏览器开发 AI浏览器 小番茄C盘清理 便捷易用C盘清理工具 小番茄C盘清理的优势尽显何处? 教你深度体验小番茄C盘清理 C盘变红?!不知所措? C盘瘦身后电脑会发生什么变化? 显示管理器 lightdm gdm 基础入门 编程 ip命令 新增网卡 新增IP 启动网卡 阿里云ECS ardunio BLE RAGFLOW webgl 具身智能 强化学习 政务 分布式系统 监控运维 Prometheus Grafana ros2 moveit 机器人运动 proxy模式 用户缓冲区 Python基础 Python教程 Python技巧 模拟实现 烟花代码 烟花 元旦 图形化界面 程序 etl 支付 微信支付 开放平台 RAGFlow 本地知识库部署 DeepSeek R1 模型 网络攻击模型 chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 私有化 fd 文件描述符 Claude eNSP 网络规划 VLAN 企业网络 epoll Kali cocoapods xcode gpt-3 文心一言 threejs 3D Google pay Apple pay MySql n8n dity make SenseVoice 环境配置 USB转串口 CH340 harmonyOS面试题 网络用户购物行为分析可视化平台 大数据毕业设计 邮件APP 免费软件 yolov8 基础环境 实战案例 序列化反序列化 k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm 查询数据库服务IP地址 SQL Server 主从复制 Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 语音识别 移动魔百盒 ruby 虚幻 游戏引擎 线程 EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 抗锯齿 SVN Server tortoise svn wpf docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 can 线程池 db openstack Xen trea idea sqlite3 Playwright 链表 P2P HDLC 信息可视化 网页设计 ssh远程登录 deepseek r1 QT 5.12.12 QT开发环境 Ubuntu18.04 双系统 GRUB引导 Linux技巧 linux上传下载 docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos 健康医疗 互联网医院 Ubuntu22.04 开发人员主页 ssh漏洞 ssh9.9p2 CVE-2025-23419 做raid 装系统 Java Applet URL操作 服务器建立 Socket编程 网络文件读取 make命令 makefile文件 粘包问题 性能分析 webstorm RAID RAID技术 磁盘 存储 图像处理 iphone uv wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 iftop 网络流量监控 安卓 升级 CVE-2024-7347 frp 内网服务器 内网代理 内网通信 镜像 VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 yaml Ultralytics 可视化 实时互动 键盘 虚拟局域网 鸿蒙系统 AI代码编辑器 wps C# MQTTS 双向认证 emqx GCC Linux环境 rnn 显卡驱动 代理服务器 rocketmq 大模型应用 navicat web3 KylinV10 麒麟操作系统 Vmware OpenSSH autodl ROS 自动驾驶 linux安装配置 金融 seatunnel aarch64 编译安装 HPC IMM perf EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 腾讯云大模型知识引擎 容器技术 iBMC UltraISO lua IPv4 子网掩码 公网IP 私有IP mamba Vmamba etcd 数据安全 RBAC jina 匿名管道 产测工具框架 IMX6ULL 管理框架 Linux的基础指令 spark HistoryServer Spark YARN jobhistory 串口驱动 CH341 uart 485 域名服务 DHCP 符号链接 配置 音乐库 飞牛 实用教程 TCP协议 RAG 检索增强生成 文档解析 大模型垂直应用 composer iperf3 带宽测试 树莓派 VNC springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 Logstash 日志采集 bcompare Beyond Compare nfs 模拟器 教程 Typore anaconda 开发 milvus java-rocketmq ldap GIS 遥感 WebGIS lio-sam SLAM glibc 大大通 第三代半导体 碳化硅 Windows ai工具 项目部署到linux服务器 项目部署过程 mariadb kali 共享文件夹 ubuntu24.04.1 蓝桥杯 内网环境 AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 HiCar CarLife+ CarPlay QT RK3588 IO模型 h.264 CLion Node-Red 编程工具 流编程 EMUI 回退 降级 cpp-httplib eclipse ArkUI 多端开发 智慧分发 应用生态 鸿蒙OS curl wget 端口 查看 ss fast 工作流 workflow 网卡的名称修改 eth0 ens33 apt 中兴光猫 换光猫 网络桥接 自己换光猫 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors springcloud 灵办AI SSH 密钥生成 SSH 公钥 私钥 生成 linux 命令 sed 命令 Cookie SRS 流媒体 直播 Deepseek-R1 私有化部署 推理模型 arcgis 单元测试 llama.cpp Portainer搭建 Portainer使用 Portainer使用详解 Portainer详解 Portainer portainer 强制清理 强制删除 mac废纸篓 环境迁移 python3.11 ue4 着色器 ue5 元服务 应用上架 换源 国内源 Debian win服务器架设 windows server dash 正则表达式 IMX317 MIPI H265 VCU 开机自启动 ShenTong rag ragflow ragflow 源码启动 迁移指南 crosstool-ng Linux find grep css3 Ark-TS语言 代理 sentinel .net mvc断点续传 飞牛nas fnos 知识图谱 tensorflow yum源切换 更换国内yum源 trae bot Docker UOS1070e 状态模式 多层架构 解耦 服务器管理 配置教程 网站管理 deekseek 虚拟显示器 cmos OpenManus swoole ros VS Code 加解密 Yakit yaklang mq 免费域名 域名解析 分析解读 AI-native Docker Desktop gcc 服务器时间 流量运营 hexo Ubuntu共享文件夹 共享目录 Linux共享文件夹 小智AI服务端 xiaozhi TTS xpath定位元素 办公自动化 自动化生成 pdf教程 bat 信号 AD 域管理 微信开放平台 微信公众号配置 triton 模型分析 小艺 Pura X Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 防火墙 NAT转发 NAT Server g++ g++13 设置代理 常用命令 文本命令 目录命令 毕昇JDK SSH 服务 SSH Server OpenSSH Server 我的世界服务器搭建 minecraft 自动化任务管理 企业网络规划 华为eNSP 本地部署AI大模型 pyautogui LInux 软链接 硬链接 Unity插件 react native cd 目录切换 iventoy VmWare OpenEuler DenseNet log4j 程序员创富 qemu libvirt 并查集 leetcode uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 Xinference vr pgpool Jellyfin 端口测试 个人博客 rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK docker命令大全 outlook ubuntu24 vivado24 我的世界 我的世界联机 数码 ABAP keepalived sonoma 自动更新 UDP grub 版本升级 扩容 昇腾 npu 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 游戏开发 HarmonyOS perl 带外管理 k8s集群资源管理 云原生开发 ArcTS 登录 ArcUI GridItem arkUI TrueLicense 服务网格 istio 合成模型 扩散模型 图像生成 Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 rustdesk 影刀 #影刀RPA# 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 超融合 RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 rclone AList webdav fnOS dns是什么 如何设置电脑dns dns应该如何设置 OD机试真题 华为OD机试真题 服务器能耗统计 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 实习 大模型面经 大模型学习 AnythingLLM AnythingLLM安装 OpenHarmony 真机调试 流水线 脚本式流水线 sdkman matplotlib efficientVIT YOLOv8替换主干网络 TOLOv8 sequoiaDB 捆绑 链接 谷歌浏览器 youtube google gmail 智能音箱 智能家居 CrewAI 图形渲染 分布式训练 rime figma 增强现实 沉浸式体验 应用场景 技术实现 案例分析 AR 虚幻引擎 nlp 问题解决 聚类 c/c++ 串口 本地化部署 自动化编程 玩机技巧 软件分享 软件图标 嵌入式系统开发 ai小智 语音助手 ai小智配网 ai小智教程 esp32语音助手 diy语音助手 PX4 版本 渗透 searxng ubuntu20.04 开机黑屏 人工智能生成内容 智能电视 kernel 拓扑图 沙盒 word neo4j 多路转接 搭建个人相关服务器 信创 信创终端 中科方德 项目部署 dock 加速 Attention 欧标 OCPP DBeaver 数据仓库 kerberos IO conda配置 conda镜像源 seleium 远程服务 代码 对比 工具 meld DiffMerge 稳定性 看门狗 大模型部署 Qwen2.5-VL vllm 宝塔 ArtTS 网络建设与运维 嵌入式Linux IPC 软负载 gnu CentOS deployment daemonset statefulset cronjob AI Agent 字节智能运维 rpa mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 运维监控 钉钉 hosts 热榜 visual studio x64 SIGSEGV xmm0 miniapp 调试 debug 断点 网络API请求调试方法 风扇控制软件 HarmonyOS NEXT 原生鸿蒙 李心怡 离线部署dify fstab docker部署Python MDK 嵌入式开发工具 论文笔记 sublime text docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 网络爬虫 推荐算法 CentOS Stream xshell termius iterm2 数据库开发 database DocFlow 论文阅读 js Linux的权限 存储维护 NetApp存储 EMC存储 deep learning 大模型推理 Redis Desktop 网络搭建 神州数码 神州数码云平台 云平台 鸿蒙开发 移动开发 yum换源 WebVM 软件卸载 系统清理 PPI String Cytoscape CytoHubba 西门子PLC 通讯