标签: 机器学习

  • 使用远程服务器加速 Immich 的机器学习推理

    为了显著提升 Immich 在执行照片和视频分析等任务时的机器学习推理性能,可以将 Immich 的机器学习容器部署在具备更强硬件性能(例如配备高性能 GPU 或专用 AI 加速卡的服务器)的远程服务器上。这种方式可以将计算密集型的推理工作负载从运行 Immich Server 的主服务器卸载,从而释放主服务器的资源并加快推理速度。

    1. 确保版本一致性

    重要提示

    1. Immich 服务器(即运行 Immich Web、API 和 Microservices 的主服务器)的版本必须与您计划在远程服务器上部署的机器学习服务容器的版本完全一致
    2. 如果这两个组件的版本不匹配,极有可能导致各种不可预期的错误、功能异常,甚至推理任务的彻底失败。为了确保系统的稳定性和功能的正常运行,请务必仔细核对并保持版本同步。

    2. 在远程系统上部署机器学习容器

    在您选定的远程服务器上,创建一个名为 docker-compose.yml 的文件。该文件将定义并配置 Immich 机器学习服务的 Docker 容器。请根据您的远程服务器的硬件配置以及您希望使用的加速后端选择合适的配置:

    name: immich_remote_ml
    
    services:
      immich-machine-learning:
        container_name: immich_machine_learning
        # For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag.
        # Example tag: ${IMMICH_VERSION:-release}-cuda
        image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
        # extends:
        #   file: hwaccel.ml.yml
        #   service: # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable
        volumes:
          - model-cache:/cache
        restart: always
        ports:
          - 3003:3003
    
    volumes:
      model-cache:

    3. 启动容器

    在远程服务器上执行以下命令启动服务:

    docker compose up -d

    4. 配置 Immich 使用远程推理服务

    在 Immich Web 界面中:

    • 进入 系统设置
    • 打开 系统管理 > 设置 > 机器学习设置
    • 将远程服务器的机器学习服务 URL 填入(例如:http://<远程服务器IP>:3003

    完成以上配置后,Immich Server 在需要进行机器学习推理时,例如人脸识别、物体识别、场景分类等,将会自动将这些请求发送到您配置的远程机器学习服务。这将利用远程服务器更强大的计算资源来加速推理过程,从而提升 Immich 的整体性能和用户体验。您可以通过观察 Immich 的任务队列和远程服务器的资源使用情况来验证远程推理是否正常工作。

  • 中文与英文在AI对话中的Token消耗与输出质量差异分析

    由于中文缺乏明显的单词边界,Tokenization机制较为复杂,导致中文在AI处理时通常消耗更多的Token,增加了计算成本。另一方面,中文的语法和语义复杂性使得其输出质量在某些情况下低于英文,尤其是在数据质量不足的情况下。尽管如此,随着中文AI模型的优化和训练数据的改善,中文处理的性能逐步提升。

    一、Token消耗的差异

    1.1 Tokenization机制差异

    • 英文:英文通常采用基于单词或子词(subwords)进行Token化。例如,单词“understanding”可能会被分解为“under”、“stand”和“ing”三个子词。这种Tokenization机制使得英文文本在AI处理时相对节省Token。
    • 中文:由于中文没有明显的单词边界,通常采用字符或者更复杂的子词进行分割。一个中文句子可能会被分解为多个单独的字符或词语,导致中文文本在AI处理中消耗更多的Token。

    结论:相同语义的文本,中文通常需要消耗更多的Token。这是由于中文的Token化机制与英文的差异所致。

    1.2 实际测试数据

    根据实际的测试数据,研究者发现相同语义的中文文本,其Token数量大约是英文的1.5至3倍。例如,一段简短的中文对话可能会占用比英文对话多得多的Token,这直接导致中文在AI处理中的成本更高。

    1.3 影响因素

    Token的消耗不仅与Tokenization机制相关,还受以下因素影响:

    • AI模型:不同的AI模型使用不同的Tokenization方法,可能会影响Token的消耗。一些针对中文优化的模型可能在处理中文时,Token消耗会有所减少,但整体上中文的Token消耗仍较高。
    • Tokenization方法:随着技术的发展,中文的Tokenization方法逐渐得到优化,可能会在未来降低中文文本的Token消耗。

    二、输出质量的差异

    2.1 语言特性

    • 中文:中文的语法、语义结构复杂,尤其在上下文理解和表达方面,存在较多的省略和隐性信息。一个中文句子的含义可能会根据前后文的变化而发生变化,这使得AI在理解和生成中文文本时面临较大的挑战。
    • 英文:英文语法结构相对简单,语义明确,且词语的顺序和搭配通常不会随上下文发生剧烈变化。这种结构使得英文文本在AI生成时更加容易且流畅。

    2.2 数据质量差异

    • 中文:虽然中文数据在逐步增加,但相较于英文,中文高质量训练数据仍较为稀缺。由于中文训练数据相对较少,且质量参差不齐,导致中文的AI模型在生成中文文本时可能出现一定的偏差,甚至生成不准确或不自然的文本。
    • 英文:英文互联网数据非常丰富,训练数据的质量和数量均处于领先地位。大量的英文数据使得AI模型能够生成更为准确和自然的英文文本。

    2.3 模型优化

    • 中文优化:随着AI技术的进步,越来越多的模型开始针对中文进行优化。这些优化不仅体现在Tokenization方法的改进上,还包括语言模型本身的调整。例如,部分模型采用更先进的中文语料库,改进上下文理解和生成能力,从而提升了中文输出质量。
    • 英文优化:英文的模型由于训练数据丰富,且语法结构相对简单,优化难度较小。因此,英文模型的输出质量较为稳定和高效。

    2.4 上下文理解

    中文具有更多的语境依赖性,这使得AI模型在理解中文的上下文时面临更大的挑战。例如,中文句子中常见的省略词、词语顺序的灵活性以及不同文化背景下的隐性表达,都增加了AI模型对中文的理解难度。

    三、总结与建议

    3.1 中文与英文在Token消耗上的差异

    • 中文文本在AI对话中通常消耗更多的Token,这意味着在处理中文文本时,AI的计算成本较高。尤其在同一语义内容下,中文的Token消耗通常是英文的1.5倍至3倍。

    3.2 输出质量差异

    • 由于中文语法和语义的复杂性,加之中文数据相对较少,中文在某些场景下的输出质量低于英文。
    • 英文因其语法结构简单、数据丰富,AI模型的生成能力较强,输出质量较为稳定。

    3.3 模型优化与数据提升

    • 随着针对中文优化的AI模型逐步发展,中文输出质量在不断提升。通过引入更丰富的中文数据和优化的训练方法,未来中文的AI处理能力有望达到与英文相当的水平。

    3.4 优化建议

    • 优化中文文本:在处理中文文本时,尽量减少冗余,精简句子,以减少Token消耗。例如,避免过多的同义词使用,确保语言简洁明了。
    • 选择针对中文优化的AI模型:选择已针对中文优化的AI模型,以提升中文输出的质量。特别是在特定领域,如中文对话生成、文章写作等,选择专门的中文模型将更具优势。