V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
panisertoller
V2EX  ›  云计算

基于腾讯云 Lighthouse 自建文本和文件翻译服务

  •  
  •   panisertoller · 2023-09-15 16:40:00 +08:00 · 1394 次点击
    这是一个创建于 460 天前的主题,其中的信息可能已经有所发展或是发生改变。

    LibreTranslate 是一个免费且开源的机器翻译 API ,完全自托管,易于设置。与其他 API 不同,它不依赖于像GoogleAzure这样的专有提供商来执行翻译。相反,它的翻译引擎由开源Argos Translate库提供支持。

    本文将引导读者通过在腾讯云Lighthouse服务器部署LibreTranslate,实现自主可控的翻译服务,且同时支持翻译文本和文件(.txt, .odt, .odp, .docx, .pptx, .epub, .html )。

    购买并配置 Lighthouse 服务器

    • Lighthouse 是腾讯云推出的一款轻量应用服务器产品,它提供了高性价比、高可用性、高安全性和高灵活性的云端计算服务。具体信息参阅官方文档:轻量应用服务器概述

    • 为了部署 LibreTranslate 服务,我们需要购买一台境外轻量应用服务器,并配置好相关的环境和依赖。购买步骤参见官方文档:使用轻量应用服务器一键创建应用,**地域选择新加坡,应用类型选择k3s**。

    • 初次部署服务时,需下载大量的翻译模型,经 gz 压缩后约 6Gb 。由于网络问题,使用境内服务器部署很可能失败(解决办法见文末)。

    创建 kubernetes 部署配置文件

    文件路径 /srv/translate.yml,请注意修改配置文件中的域名 fanyi.rehiy.com

    kind: Deployment
    apiVersion: apps/v1
    metadata:
      name: &name translate
      labels:
        app: *name
    spec:
      selector:
        matchLabels:
          app: *name
      template:
        metadata:
          labels:
            app: *name
        spec:
          containers:
            - name: translate
              image: libretranslate/libretranslate
              env:
                - name: LT_REQ_LIMIT
                  value: "30"
                - name: LT_THREADS
                  value: "4"
              ports:
                - containerPort: 5000
              volumeMounts:
                - name: *name
                  subPath: home
                  mountPath: /home/libretranslate
          volumes:
            - name: *name
              hostPath:
                path: /srv/translate
                type: DirectoryOrCreate
    ---
    kind: Service
    apiVersion: v1
    metadata:
      name: &name translate
      labels:
        app: *name
    spec:
      selector:
        app: *name
      ports:
        - name: http
          port: 5000
          targetPort: 5000
    ---
    kind: Ingress
    apiVersion: networking.k8s.io/v1
    metadata:
      name: &name translate
      annotations:
        traefik.ingress.kubernetes.io/router.entrypoints: web
    spec:
      rules:
        - host: fanyi.rehiy.com
          http:
            paths:
              - path: /
                pathType: Prefix
                backend:
                  service:
                    name: *name
                    port:
                      name: http
    

    为防止被恶意利用,配置中将LT_REQ_LIMIT设定为 30 ,读者可以根据自己的情况调整。也可以启用 TOKEN 建立需要授权的服务,参阅官方文档 Manage API Keys

    部署 LibreTranslate 服务

    通过 ssh 登录服务器,执行以下命令,部署 LibreTranslate 服务。初次部署需下载大量模型,请耐心等待配置完成。

    kubectl apply -f /srv/translate.yml
    

    测试 LibreTranslate 能力

    作者部署的服务器已关闭外部访问能力,请务必使用自己部署的域名进行测试。

    • 基于浏览器访问

    • 基于 API 访问
    const res = await fetch("http://fanyi.rehiy.com/translate", {
      method: "POST",
      body: JSON.stringify({
        q: "Hello!",
        source: "en",
        target: "zh"
      }),
      headers: {"Content-Type": "application/json"}
    });
    
    console.log(await res.json());
    

    如何在国内服务器部署

    解决的办法有很多(比如去官网手动下载每个模型),这里提供一种简单且合规的方法:

    在境外部署完成后,将/srv/translate目录同步到国内服务器上。这样在国内部署时就不再需要下载翻译模型,从而避开网络慢导致的问题。

    3 条回复    2023-09-19 17:08:35 +08:00
    yumusb
        1
    yumusb  
       2023-09-15 19:16:11 +08:00   ❤️ 2
    panisertoller
        2
    panisertoller  
    OP
       2023-09-16 10:10:22 +08:00
    这个模型似乎对长文翻译更友好些,而且有些单词的确很奇葩,如果要投产,恐怕得自己训练一个模型。
    panisertoller
        3
    panisertoller  
    OP
       2023-09-19 17:08:35 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3207 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:32 · PVG 20:32 · LAX 04:32 · JFK 07:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.