标签: AI

  • 在个人 PC 上选择 Ollama 还是 LM Studio

    随着大语言模型的普及,越来越多用户希望将它们部署在本地设备上,以获得离线使用、隐私保护和更低延迟的优势。Ollama 和 LM Studio 是两款常见的本地部署工具,它们各具特点,适用于不同类型的用户

    一、Ollama 简介

    Ollama 是一个轻量级的本地大语言模型运行框架,通过命令行即可完成模型的下载、运行与交互。它以“开箱即用”为目标,简化了本地部署流程,同时保留了较高的灵活性和可扩展性。

    主要特点:

    • 命令行驱动,适合技术用户;
    • 支持主流模型(如 LLaMA、Mistral、Gemma 等);
    • 提供本地 REST API 接口;
    • 模型管理与更新简便;
    • 支持 macOS、Windows、Linux;
    • 开源项目
      优点:
    • 使用灵活,支持自动化脚本与集成;
    • 模型运行效率高,资源控制好;
    • 自定义模型与镜像构建功能强大;
    • 社区活跃,支持快速反馈与迭代。

    不足:

    • 无图形界面,初学者入门有门槛;
    • 高级功能配置依赖命令行与配置文件。

    二、LM Studio 简介

    LM Studio 是一款图形化的本地语言模型运行工具,主打易用性,面向非技术用户快速上手。内置 Hugging Face 模型库浏览器,可通过界面选择、下载、运行模型。

    主要特点:

    • 图形界面,适合所有用户;
    • 内置模型市场,支持一键下载;
    • 支持对话式模型交互;
    • 可开启本地 API 服务接口;
    • 支持 macOS、Windows(Linux 支持计划中);
    • 闭源软件,当前未公开源代码。

    优点:

    • 使用门槛低,界面清晰直观;
    • 操作流程完整,适合内容创作与教学演示;
    • 支持 GGUF 模型导入,兼容性良好。

    不足:

    • 不支持命令行控制或脚本化自动操作;
    • API 接口功能相对基础;
    • 开源性不足,透明度受限。

    三、API 调用功能对比

    功能项OllamaLM Studio
    是否支持 API
    启动方式命令行中自动启动 REST 服务GUI 中启用 “Open Local Server” 选项
    默认端口http://localhost:11434http://localhost:1234(可自定义)
    接口格式JSON,类似 OpenAI APIJSON,兼容 OpenAI 接口规范
    流式输出支持(stream: true)支持(SSE)
    高级功能支持模型管理、嵌入生成、多线程等主要用于文本生成,功能相对简单

    四、选择建议

    使用场景推荐工具
    技术开发者、需命令行控制Ollama
    普通用户、内容创作LM Studio
    需要灵活脚本化操作Ollama
    追求图形化体验LM Studio
    重视开源与可控性Ollama
    快速试用与界面管理LM Studio

    Ollama 和 LM Studio 都可以作为个人 PC 上运行本地语言模型的有效方案。前者面向技术用户,提供完整的 CLI 与 API 控制能力,适合复杂工作流集成与开发使用;后者主打易用与界面化,适合内容生成和日常交互使用。两者不冲突,可并存使用,根据不同任务切换工具。

  • Ubuntu 24.04 安装 vLLM

    安装要求

    • 操作系统:Linux(Ubuntu 24.04)
    • Python:3.12
    • GPU 支持:NVIDIA A100、RTX 系列(需安装 NVIDIA 驱动和 CUDA)

    一、安装 Miniconda

    1. 下载并安装 Miniconda:
    mkdir -p ~/miniconda3
    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
    bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
    rm ~/miniconda3/miniconda.sh
    1. 初始化 shell 环境
    source ~/miniconda3/bin/activate
    1. 初始化 Conda 到所有可用 shell:
    conda init --all

    二、创建 Python 虚拟环境并安装 vLLM

    1. 创建基于 Python 3.12 的虚拟环境:
    conda create -n vllm python=3.12 -y
    1. 激活环境:
    conda activate vllm
    1. 使用 pip 安装 vLLM:
    pip install vllm

    三、安装gemma-3-27b-it-qat

    1. 加载并运行模型
    vllm serve "google/gemma-3-27b-it-qat-q4_0-gguf"
    1. 浏览器访问API
    http://localhost:8000
  • Debian12 安装Dify大语言模型(LLM) 应用开发平台

    Dify 是一款开源的大语言模型(LLM)应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。

    Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。

    1. 安装 Docker 和 Docker Compose

    在服务器上运行以下命令安装 Docker:

    curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh

    2. 安装 Dify

    2.1 克隆 Dify 源代码至本地环境

    git clone https://github.com/langgenius/dify.git --branch 1.0.1

    2.2 启动 Dify

    进入 Dify 源代码的 Docker 目录,并执行以下步骤:

    # 进入 Dify 源代码的 Docker 目录
    cd dify/docker
    
    # 复制环境配置文件
    cp .env.example .env
    
    # 启动 Docker 容器
    docker compose up -d
    
    # 最后检查是否所有容器都正常运行
    docker compose ps

    2.3 访问 Dify 进行安装

    在浏览器中访问以下地址,完成安装流程:

    http://your_server_ip/install

    3. 在 Dify 中接入模型

    在 Dify 控制面板中,进入 设置 > 模型供应商,然后点击 接入模型
    按照界面指引,输入模型供应商相关 API 信息,并完成模型的接入配置。

  • F5-TTS 安装与使用教程

    F5-TTS 安装与使用教程

    F5-TTS 是一个 高质量的文本转语音(TTS, Text-to-Speech) 开源项目

    1. 环境准备

    1.1 安装 Conda(如果未安装)

    F5-TTS 依赖 Python 3.10,建议使用 Conda 创建隔离环境。如果您的系统尚未安装 Conda,可以前往 Anaconda 官网Miniconda 官网 下载并安装合适的版本。

    1.2 创建 Conda 环境并激活

    # 创建 Python 3.10 的 Conda 环境
    conda create -n f5-tts python=3.10  
    
    # 激活环境
    conda activate f5-tts

    2. 安装 PyTorch

    NVIDIA-CUDA

    pip install torch==2.4.0+cu124 torchaudio==2.4.0+cu124 --extra-index-url https://download.pytorch.org/whl/cu124

    3. 下载 F5-TTS 源码并安装

    # 克隆 F5-TTS 仓库
    git clone https://github.com/SWivid/F5-TTS.git
    cd F5-TTS
    
    # 安装 F5-TTS
    pip install -e .

    4. 运行 F5-TTS

    F5-TTS 提供了一个 Gradio Web 界面,可用于进行文本转语音推理。运行以下命令即可启动 Web UI:

    f5-tts_infer-gradio

    启动后,终端会显示一个本地地址

    * Running on local URL:  http://127.0.0.1:7860

    打开浏览器访问该地址即可使用 F5-TTS 进行文本转语音转换。

    5. 音频处理

    使用 ffmpeg.m4a 文件转换为 .wav 并剪辑前 15 秒,可以使用以下命令:

    ffmpeg -i input.m4a -t 15 -acodec pcm_s16le -ar 44100 -ac 2 output.wav

    参数说明:

    • -i input.m4a :输入文件
    • -t 15 :剪辑前 15 秒
    • -acodec pcm_s16le :使用 PCM 16-bit little-endian 编码
    • -ar 44100 :设置采样率为 44100Hz
    • -ac 2 :输出为双声道
    • output.wav :输出文件名

    如果你需要从某个时间点(如 30 秒处)开始剪辑 15 秒,可以使用 -ss 选项:

    ffmpeg -i input.m4a -ss 30 -t 15 -acodec pcm_s16le -ar 44100 -ac 2 output.wav

    这样会从第 30 秒开始截取 15 秒音频并转换为 WAV 格式。

  • AI驱动的供应链污染及其安全隐患分析

    随着人工智能(AI)的发展,越来越多的开发者和企业依赖AI生成代码、优化软件和提升生产力。然而,AI在供应链中的应用也带来了严重的安全隐患,攻击者可以利用AI技术污染软件供应链,导致个人用户、开发者和企业面临各种安全风险。

    1. 小白用户下载第三方AI插件,导致系统被植入恶意代码

    案例描述

    • 小白用户在非官方渠道下载了一款“智能办公插件”或AI图像生成工具的扩展插件,但插件内嵌了恶意代码。
    • 恶意代码可能包含远程控制程序、键盘记录器、勒索软件等。
    • 用户未经检查直接运行插件,导致系统被感染。

    安全隐患

    • 个人数据泄露,账号密码、支付信息被窃取。
    • 电脑被远程控制,成为“僵尸网络”一部分。
    • 重要文件被加密,要求支付赎金解锁。

    防范措施

    • 只从官方渠道下载软件和插件。
    • 使用安全软件扫描插件,避免恶意代码感染。
    • 在沙盒或虚拟机环境中测试插件,确保安全性。
    • 提高安全意识,不随意运行来源不明的脚本。

    2. AI生成的代码未经审查上线,导致安全漏洞

    案例描述

    • 开发者使用AI代码生成工具加速开发,但未进行充分的安全审查。
    • AI生成的代码可能包含SQL注入、XSS(跨站脚本攻击)或未授权访问等漏洞。
    • 攻击者利用这些漏洞入侵系统,造成数据泄露或服务宕机。

    安全隐患

    • 敏感数据泄露,可能导致企业声誉受损。
    • 服务器被入侵,影响系统稳定性。
    • 面临法律诉讼,造成经济损失。

    防范措施

    • 对AI生成的代码进行严格安全审查。
    • 使用静态代码分析工具检测安全漏洞。
    • 进行安全测试,模拟攻击场景。
    • 建立代码审查流程,确保代码质量和安全性。

    3. AI联网搜索的恶意代码被直接复制到生产环境

    案例描述

    • 小白程序员在开发过程中使用AI联网搜索写代码进行快速开发。
    • AI提供的代码中隐藏了恶意后门,但程序员未仔细审查。
    • 该代码被部署到生产环境,导致服务器被入侵。

    安全隐患

    • 服务器长期被攻击者控制,可能导致数据泄露。
    • 攻击者窃取企业机密信息,造成商业损失。
    • 可能面临合规性问题和法律风险。

    防范措施

    • 仅信任权威的代码来源,不随意复制粘贴。
    • 使用代码审查工具检测潜在风险。
    • 在测试环境中进行严格测试,确保安全性。
    • 限制AI代码生成工具的访问权限。

    4. AI优化的开源项目隐藏恶意代码

    案例描述

    • 攻击者利用AI生成开源代码并提交到流行项目。
    • 由于代码较复杂,维护者未深入审查直接合并。
    • 受影响的开源项目被广泛使用,导致大量系统受到攻击。

    安全隐患

    • 供应链污染,影响范围广泛。
    • 恶意代码可能导致远程控制或数据窃取。
    • 企业使用该代码后,面临重大安全威胁。

    防范措施

    • 对开源贡献代码进行严格审查。
    • 监控开源库的维护动态,避免使用可疑代码。
    • 采用SBOM(软件物料清单)追踪供应链依赖。

    5. AI优化的编译器或代码压缩工具被污染

    案例描述

    • 开发者使用AI驱动的编译器或压缩工具进行代码优化。
    • 由于工具被污染,编译后的代码被植入恶意逻辑。
    • 该代码最终进入生产环境,影响用户。

    安全隐患

    • 恶意代码难以察觉,长期潜伏。
    • 可能窃取用户数据或劫持API请求。
    • 影响多个企业或开发团队。

    防范措施

    • 仅使用经过安全审计的编译工具。
    • 代码生成后进行额外的安全检查。
    • 监测应用行为,防止异常代码执行。

    6. AI生成的伪造开源项目欺骗开发者

    案例描述

    • 攻击者利用AI生成完整的开源项目,提供详细文档和示例代码。
    • 该项目被宣传为“创新的开源解决方案”,吸引开发者使用。
    • 实际上,该项目隐藏后门,允许远程控制。

    安全隐患

    • 受信任的开源平台被污染,影响开发者社区。
    • 企业误用后门代码,导致数据泄露。
    • 供应链信任体系受损。

    防范措施

    • 避免轻信新兴开源项目,优先使用知名软件。
    • 检查开源库的维护历史,确保代码安全。
    • 对第三方依赖进行安全扫描。

    AI在提高开发效率的同时,也带来了前所未有的安全挑战。为防范AI驱动的供应链污染,需要开发者、企业和安全研究人员共同努力:

    • 小白用户 提高安全意识,不随意下载和运行不明来源的代码,尤其是AI生成的插件和工具。
    • 开发者 加强代码审查,避免误用AI生成的恶意代码。
    • 企业 对供应链安全进行全面管理,防止供应链攻击。

    AI的安全问题不容忽视,只有建立完善的安全机制,才能在享受AI带来的便利的同时,避免潜在的安全风险。

  • Debian12安装 Immich 进行自托管照片和视频

    Immich 是一个强大的自托管照片和视频管理解决方案,允许用户在自己的服务器上存储、管理和浏览照片,同时提供智能搜索、面部识别等 AI 功能,保护您的隐私。

    1. 介绍 Immich

    Immich 的主要功能

    • 自动备份:支持手机和桌面端自动同步照片和视频。
    • 智能搜索:基于 AI 的搜索和标签功能,快速查找照片。
    • 面部识别:自动识别照片中的人物并进行分类。
    • 隐私保护:完全自托管,确保数据不会泄露到第三方服务器。
    • 高效存储:支持增量备份和重复数据删除,优化存储空间。
    • 跨平台支持:支持 Android、iOS、Web 和桌面端访问。

    2. 安装 Docker 和 Docker Compose

    在 Linux 服务器上运行以下命令安装 Docker:

    curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh

    安装完成后,检查 Docker 版本:

    docker --version

    安装 Docker Compose:

    apt install -y docker-compose

    3. 下载 Immich 并配置环境变量

    3.1 创建 Immich 安装目录

    mkdir ./immich-app && cd ./immich-app

    3.2 下载官方 Docker Compose 文件

    #  docker-compose.yml
    wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
    
    # .env
    wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

    docker-compose.yml文件

    #
    # WARNING: To install Immich, follow our guide: https://immich.app/docs/install/docker-compose
    #
    # Make sure to use the docker-compose.yml of the current release:
    #
    # https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
    #
    # The compose file on main may not be compatible with the latest release.
    
    name: immich
    
    services:
      immich-server:
        container_name: immich_server
        image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
        # extends:
        #   file: hwaccel.transcoding.yml
        #   service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
        volumes:
          # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
          - ${UPLOAD_LOCATION}:/usr/src/app/upload
          - /etc/localtime:/etc/localtime:ro
        env_file:
          - .env
        ports:
          - '2283:2283'
        depends_on:
          - redis
          - database
        restart: always
        healthcheck:
          disable: false
    
      immich-machine-learning:
        container_name: immich_machine_learning
        # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
        # Example tag: ${IMMICH_VERSION:-release}-cuda
        image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
        # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
        #   file: hwaccel.ml.yml
        #   service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
        volumes:
          - model-cache:/cache
        env_file:
          - .env
        restart: always
        healthcheck:
          disable: false
    
      redis:
        container_name: immich_redis
        image: docker.io/redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8
        healthcheck:
          test: redis-cli ping || exit 1
        restart: always
    
      database:
        container_name: immich_postgres
        image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52
        environment:
          POSTGRES_PASSWORD: ${DB_PASSWORD}
          POSTGRES_USER: ${DB_USERNAME}
          POSTGRES_DB: ${DB_DATABASE_NAME}
          POSTGRES_INITDB_ARGS: '--data-checksums'
        volumes:
          # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
          - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
        healthcheck:
          test: >-
            pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
            Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
            --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
            echo "checksum failure count is $$Chksum";
            [ "$$Chksum" = '0' ] || exit 1
          interval: 5m
          start_interval: 30s
          start_period: 5m
        command: >-
          postgres
          -c shared_preload_libraries=vectors.so
          -c 'search_path="$$user", public, vectors'
          -c logging_collector=on
          -c max_wal_size=2GB
          -c shared_buffers=512MB
          -c wal_compression=on
        restart: always
    
    volumes:
      model-cache:

    .env文件

    # You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
    
    # The location where your uploaded files are stored
    UPLOAD_LOCATION=./library
    # The location where your database files are stored
    DB_DATA_LOCATION=./postgres
    
    # To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
    # TZ=Etc/UTC
    
    # The Immich version to use. You can pin this to a specific version like "v1.71.0"
    IMMICH_VERSION=release
    
    # Connection secret for postgres. You should change it to a random password
    # Please use only the characters `A-Za-z0-9`, without special characters or spaces
    DB_PASSWORD=postgres
    
    # The values below this line do not need to be changed
    ###################################################################################
    DB_USERNAME=postgres
    DB_DATABASE_NAME=immich

    3.3 配置环境变量

    编辑 .env 文件:

    nano .env

    修改以下关键参数:

    # You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
    
    # The location where your uploaded files are stored
    UPLOAD_LOCATION=./library
    # The location where your database files are stored
    DB_DATA_LOCATION=./postgres
    
    # To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
    # TZ=Etc/UTC
    
    # The Immich version to use. You can pin this to a specific version like "v1.71.0"
    IMMICH_VERSION=release
    
    # Connection secret for postgres. You should change it to a random password
    # Please use only the characters `A-Za-z0-9`, without special characters or spaces
    DB_PASSWORD=postgres
    
    # The values below this line do not need to be changed
    ###################################################################################
    DB_USERNAME=postgres
    DB_DATABASE_NAME=immich
    • 指定备份存储位置:
      • 请在UPLOAD_LOCATION中填写您希望存储备份文件的绝对路径。建议选择服务器上具有足够可用空间的新建目录,以确保备份顺利进行。
    • 设置数据库密码:
      • 强烈建议您修改DB_PASSWORD,为其设置一个自定义的强密码。由于PostgreSQL服务仅在本地Docker容器内运行,此密码用于本地身份验证。为避免Docker在解析密码时出现问题,请仅使用A-Za-z0-9范围内的字符。您可以使用pwgen等工具生成安全的随机密码。

    4. 启动 Immich

    运行 Docker Compose 启动 Immich

    docker-compose.yml 所在目录运行:

    docker compose up -d

    5. 访问 Immich Web 界面

    在浏览器中输入:

    http://<服务器IP>:2283

    首次访问时,需要注册一个管理员账户,登录后即可开始使用。