免费和开源的机器翻译软件LibreTranslate

2023-09-15 09:20:37

在这里插入图片描述

什么是 LibreTranslate ?

LibreTranslate 免费开源机器翻译 API,完全自托管。与其他 API 不同,它不依赖于 GoogleAzure 等专有提供商来执行翻译。它的翻译引擎由开源 Argos Translate 库提供支持。

这个软件在 20223 月的时候折腾过,但当时容器会停止,从下面的文章看,应该可能是内存不够。

https://www.reddit.com/r/selfhosted/comments/yrdeyc/libretranslate_free_and_open_source_machine

毕竟翻译模型和语言模型都是很耗资源的,当然除了内存,最好还有 GPU 的支持。

今年 618 买了根内存条,所以又把它翻出来了,虽然才 8G,但确实跑起来了,也有可能是老苏选择的语言模型少的缘故。

文中部分截图还是使用的老图,但不会影响您的理解;

如果你不想自己搭建,可以去官方搭建的站点看看,网址:https://libretranslate.com

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 libretranslate ,选择第一个 libretranslate/libretranslate,版本选择 latest

  1. 本次折腾,latest 对应的版本是 v1.3.11;
  2. 如果你的主机带 nvidia 显卡,可以选择 latest-cuda 试试;

端口

本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
53535000

环境

LibreTranslate 有很多命令行参数,可以参考官方的文档:https://github.com/LibreTranslate/LibreTranslate#arguments

【注意】:每个参数都有一个可以替代使用的等效环境变量。环境。变量会覆盖默认值,但优先级低于命令参数,并且在与 Docker 一起使用时特别有用。环境变量名称是等效命令参数名称的大写字母,带有LT前缀。

老苏没有使用环境变量,而是在命令行中输入了 --load-only en,zh,意思是只加载中文和英文。如果要使用环境变量,可以用 LT_LOAD_ONLY

命令行运行

命令行方式中,老苏对容器的最大内存使用量和 CPU 占用做了限制;当然机器够强的话,可以不做限制的;

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 运行容器(低调内敛模式)
docker run -d \
   --restart unless-stopped \
   --name libretranslate \
   --cpu-shares="700" \
   --memory 4096m \
   -p 5353:5000 \
   libretranslate/libretranslate \
   --load-only en,zh

# 运行容器(火力全开模式)
docker run -d \
   --restart unless-stopped \
   --name libretranslate \
   -p 5353:5000 \
   libretranslate/libretranslate \
   --load-only en,zh

参数说明:

  • --cpus-shares="700":为容器提供更少比例的 CPU 周期,默认为 1024;
  • --memory 4096m;为容器的内存使用设置一个无法超越的硬限制;

在这里插入图片描述

从上图可以看到,第一次运行时,会下载我们设定的语言模型

docker-compose 安装

不推荐这种方式安装,会看不到容器的日志,原因不明;这会导致你不知道语言模型是否下载成功,因而不知道什么时候才能正常访问

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'

services:
  libretranslate:
    image: libretranslate/libretranslate
    container_name: libretranslate
    restart: unless-stopped
    # mem_limit: 4096m
    # cpu_shares: 700
    ports:
      - 5353:5000
    healthcheck:
      test: ['CMD-SHELL', './venv/bin/python scripts/healthcheck.py']
    command: --load-only en,zh

如果你想启用资源限制,可以去掉 # 号的注释;

然后执行下面的命令

# 新建文件夹 libretranslate 
mkdir -p /volume1/docker/libretranslate

# 进入 libretranslate 目录
cd /volume1/docker/libretranslate

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

第一次运行会需要下载语言模型

当你在日志中看到 Running on http://0.0.0.0:5000 时,就可以在浏览器中输入 http://群晖IP:5353 ,并看到主界面了

在这里插入图片描述

复制了下面这段英文,试了下 英翻中

Free and Open Source Machine Translation API. Self-hosted, offline capable and easy to setup.

在这里插入图片描述

又用下面这段中文,试了下 中翻英

Plane 是一个简单的、可扩展的、开源的项目和产品管理工具。

LibreTranslate 翻译的

Plane is a simple, expanded, open-source project and product management tool

百度翻译的

Plane is a simple, scalable, open-source project and product management tool.

似乎看起来效果还可以对吧,此外还支持翻译文件,格式也比较丰富

在这里插入图片描述

至于 API 一般人也用不上,就不提了

参考文档

LibreTranslate/LibreTranslate: Free and Open Source Machine Translation API. 100% self-hosted, offline capable and easy to setup.
地址:https://github.com/LibreTranslate/LibreTranslate

Docker Container Memory & CPU Limit: Set Up and Manage Resources
地址:https://phoenixnap.com/kb/docker-memory-and-cpu-limit

更多推荐

【AI】推理系统和推理引擎的整体架构

本文主要是对B站Up主ZOMI酱推理系统系列视频的理解,可以认为是重点笔记。一、深度学习模型的全生命周期相信很多人和我一样,刚看到深度学习模型中的推理系统或推理引擎时是一头雾水,因为学习DL时通常关注于模型的设计和训练。下图是深度学习模型的全生命周期图,主要分为两大类任务,训练任务和推理任务。训练任务:通常需要执行数小

理解 React 服务器组件

自从React被引入开发社区以来的十年里,它经历了几次演变。React团队在发生根本性变革时并不害羞:如果他们发现了一个更好的问题解决方案,他们就会带着它运行。几个月前,React团队推出了ReactServerComponents,这是最新的范式转变。有史以来第一次,React组件可以只在服务器上运行。网上对此有太多

计算物理专题----蒙特卡洛积分实战

Partone蒙特卡洛积分计算案例importnumpyasnpimportmatplotlib.pyplotaspltimportpandasaspdfromscipy.statsimportnorm,kstestnp.random.seed(0)defintegrate(a,b,n=100):x=np.random

面向过程与面向对象、面向对象三大特性的介绍和示例

面向过程:将问题分解成一个个详细的步骤,然后通过函数实现每一个步骤,并依次调用特点:1、适合解决简单的问题,不需要过多的协作和抽象2、关注问题的解决步骤而不是问题的本质3、代码复用性低,扩展性差,不易维护4、只有封装,没有继承和多态面向对象:通过分析问题,分解出一个个对象,然后通过不同对象之间的调用和相互协作来解决问题

论如何在Android中还原设计稿中的阴影

每当设计稿上注明需要添加阴影时,Android上总是显得比较棘手,因为Android的阴影实现方式与Web和iOS有所区别。一般来说阴影通常格式是有:X:在X轴的偏移度Y:在Y轴偏移度Blur:阴影的模糊半径Color:阴影的颜色何为阴影但是在Android中却比较单一,只有一个度量单位:Elevation,作为在An

ELK 企业级日志分析系统 ELFK

一、概述ELK平台是一套完整的日志集中处理解决方案,将ElasticSearch、Logstash和Kiabana三个开源工具配合使用,完成更强大的用户对日志的查询、排序、统计需求。使用ELK日志文件系统的原因:日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过

ELK集群部署

目录ELKElasticsearch集群部署部署Elasticsearch软件安装Elasticsearch-head插件ELKLogstash部署ELKKiabana部署Filebeat+ELK部署ELKElasticsearch集群部署Node1节点(2C/4G):node1/192.168.233.30Elast

浅谈C++|STL之list+forward_list篇

一.list基本概念功能:将数据进行链式存储链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的链表的组成:链表由—系列结点组成结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域STL中的链表是一个双向循环链表由于链表的存储方式并不是连续的内存空间

阿里云无影云电脑详细介绍:价格、使用和功能优势说明

什么是阿里云无影云电脑?无影云电脑(原云桌面)是一种快速构建、高效管理桌面办公环境,无影云电脑可用于远程办公、多分支机构、安全OA、短期使用、专业制图等使用场景,阿里云百科分享无影云桌面的详细介绍、租用价格、云电脑的优势、使用场景、网络架构、无影云电脑与云服务器的区别以及关于无影云电脑的常见问题解答FAQ:目录阿里云无

华为云云耀云服务器L实例评测|用PHP从数据库到后端到前端完整实现一个中秋节祝福语项目

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。🏆本文已收录于PHP专栏:PHP进阶实战教程,评测专区。🎉欢迎👍点赞✍评论⭐收藏文章目录🚀一、前言🚀二、

TCP详解之重传机制

TCP详解之重传机制TCP实现可靠传输的方式之一,是通过序列号与确认应答。在TCP中,当发送端的数据到达接收主机时,接收端主机会返回一个确认应答消息,表示已收到消息。但在错综复杂的网络,并不一定能如上图那么顺利能正常的数据传输,万一数据在传输过程中丢失了呢?所以TCP针对数据包丢失的情况,会用重传机制解决。接下来说说常

热文推荐