超簡單Translation翻譯模型部署

Helsinki-NLP/opus-mt-{en}-{zh}系列翻譯模型可以實現200多種語言翻譯,Helsinki-NLP/opus-mt-en-zh是其中英互譯模型。由于項目需要,在本地進行搭建,并記錄下搭建過程,方便后人。

1. 基本硬件環境

  • CPU:N年前的 Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz, 32G內存
  • GPU:N年前的?NVIDIA GeForce GTX 1080 Ti,11G顯存

2. 基本軟件環境

  • 操作系統:Ubuntu20.04 LTS,是為了跟老舊的硬件相匹配,專門降級到20.04的,更高版本存在各種軟件兼容性問題,等有錢了全部換新!!!
  • CUDA:cuda_12.0.0_525.60.13_linux.run,雖然能支持到12.2甚至12.4,保險起見還是選擇了12.0
  • Cudnn:libcudnn8_8.8.0.121-1+cuda12.0_amd64.deb,對應CUDA版本
  • NCCL:libnccl2_2.19.3-1+cuda12.0_amd64.deb對應CUDA版本,多顯卡需要
  • miniconda:Miniconda3-py312_24.9.2-0-Linux-x86_64.sh

3. 克隆fishspeech代碼并安裝本地依賴包

git clone https://gitclone.com/github.com/fishaudio/fish-speech.gitsudo apt-get install ffmpeg libsm6 libxext6 portaudio19-dev -y

4. 創建虛擬環境

conda create -n huggingface python==3.10 -y
conda activate huggingface

5. conda安裝基礎包

conda install -c pytorch -c nvidia -c conda-forge pytorch torchvision pytorch-cuda=11.8

6. 安裝huggingface組件,transformers包

pip install transformers -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -U huggingface_hub -i https://pypi.tuna.tsinghua.edu.cn/simple設置環境變量,用于加速
HF_ENDPOINT=https://hf-mirror.com

7. 以python腳本方式運行

# Load model directly
from transformers import AutoTokenizer, AutoModelForSeq2SeqLMtokenizer = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-en-zh")
model = AutoModelForSeq2SeqLM.from_pretrained("Helsinki-NLP/opus-mt-en-zh")def translate(text):inputs = tokenizer(text, return_tensors="pt", padding=True)translated = model.generate(**inputs)return [tokenizer.decode(t, skip_special_tokens=True) for t in translated]print(tokenizer.supported_language_codes)
text = ">>cmn_Hans<< Due to a bug fix in https://github.com/huggingface/transformers/pull/28687 transcription using a multilingual Whisper will default to language detection followed by transcription instead of translation to English.This might be a breaking change for your use case. If you want to instead always translate your audio to English, make sure to pass `language='en'`. The attention mask is not set and cannot be inferred from input because pad token is same as eos token. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results."
translated_text = translate(text)
print(translated_text)

首次運行會報錯,因為缺少兩個依賴包,安裝即可

pip install sentencepiece sacremoses -i https://pypi.tuna.tsinghua.edu.cn/simple

8. 以FastAPI方式運行

# 安裝fastapi ubicorn組件
pip install fastapi uvicorn -i https://pypi.tuna.tsinghua.edu.cn/simple

服務腳本如下:

# Load model directly
from fastapi import FastAPI
from pydantic import BaseModel
from transformers import AutoTokenizer, AutoModelForSeq2SeqLMapp = FastAPI()tokenizer = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-en-zh")
model = AutoModelForSeq2SeqLM.from_pretrained("Helsinki-NLP/opus-mt-en-zh")def translate(text):inputs = tokenizer(text, return_tensors="pt", padding=True)translated = model.generate(**inputs)return [tokenizer.decode(t, skip_special_tokens=True) for t in translated]# print(tokenizer.supported_language_codes)
# text = ">>cmn_Hans<< Due to a bug fix in https://github.com/huggingface/transformers/pull/28687 transcription using a multilingual Whisper will default to language detection followed by transcription instead of translation to English.This might be a breaking change for your use case. If you want to instead always translate your audio to English, make sure to pass `language='en'`. The attention mask is not set and cannot be inferred from input because pad token is same as eos token. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results."
# translated_text = translate(text)
# print(translated_text)class TextRequest(BaseModel):text: str@app.post("/predict")
async def predict(request: TextRequest):# 預處理和預測translated_text = translate(request.text)# 返回結果return {"text": request.text,"predictions": translated_text}

運行服務

uvicorn fastapi_app:app --host 0.0.0.0 --port 8000

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82674.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82674.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82674.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Go語言JSON 序列化與反序列化 -《Go語言實戰指南》

JSON&#xff08;JavaScript Object Notation&#xff09;是一種常見的數據交換格式。Go 標準庫提供了 encoding/json 包&#xff0c;用于方便地將結構體與 JSON 之間互轉。 一、序列化&#xff08;Marshal&#xff09; 將 Go 中的數據結構&#xff08;如結構體、map、slice 等…

免費PDF工具-PDF24V9.16.0【win7專用版】

【百度】https://pan.baidu.com/s/1H7kvHudG5JTfxHg-eu2grA?pwd8euh 提取碼: 8euh 【夸克】https://pan.quark.cn/s/92080b2e1f4c 【123】https://www.123912.com/s/0yvtTd-XAHjv https://creator.pdf24.org/listVersions.php

網絡 :序列和反序列化

網絡 &#xff1a;序列和反序列化 &#xff08;一&#xff09;序列和反序列 概念&#xff08;二&#xff09;實例1. 封裝socket 接口2. 制定協議&#xff08;用于實現序列和反序列化&#xff09;3. 計算(實現計算器功能)4. 服務器(將上面所有的類功能調用起來)5. 服務端6.客戶端…

LiveQing 視頻點播流媒體 RTMP 推流服務功能:搭建 RTMP 視頻流媒體服務詳細指南

LiveQing視頻點播流媒體RTMP推流服務功能&#xff1a;搭建RTMP視頻流媒體服務詳細指南 一、流媒體服務搭建二、推流工具準備三、創建鑒權直播間四、獲取推流地址五、配置OBS推流六、推流及播放七、獲取播放地址7.1 頁面查看視頻源地址7.2 接口查詢 八、相關問題解決8.1 大疆無人…

UE5 Niagara 如何讓四元數進行旋轉

Axis Angle中&#xff0c;X,Y,Z分別為旋轉的軸向&#xff0c;W為旋轉的角度&#xff0c;在這里旋轉角度不需要除以2&#xff0c;因為里面已經除了&#xff0c;再將計算好的四元數與要進行旋轉的四元數進行相乘&#xff0c;結果就是按照原來的角度繞著某一軸向旋轉了某一角度

【微服務】SpringBoot 對接飛書審批流程使用詳解

目錄 一、前言 二、前置準備 2.1 開通企業飛書賬戶 2.2 確保賬戶具備多維表操作權限 2.3 獲取飛書開放平臺文檔 2.4 創建應用 2.5 發布應用 2.6 應用添加操作權限 2.7 獲取SDK 三、審批流程對接過程 3.1 配置流程審批定義(流程審批模型) 3.2 自定義應用添加審批AP…

主鍵與唯一鍵詳解:概念、區別與面試要點

主鍵與唯一鍵詳解:概念、區別與面試要點 一、核心概念解析 1.1 主鍵(Primary Key) 主鍵是數據庫表中用于唯一標識每一行記錄的列或列組合,具有以下核心特性: 唯一性:主鍵值在整個表中必須唯一,不允許重復非空性:主鍵列不允許包含NULL值不可變性:主鍵值一旦確立,原則…

前端面試準備-1

1.NodeJS的優缺點 優點&#xff1a;   高并發&#xff08;最重要的優點&#xff09;   適合I/O密集型應用 缺點&#xff1a;   不適合CPU密集型應用&#xff1b;CPU密集型應用給Node帶來的挑戰主要是&#xff1a;由于JavaScript單線程的原因&#xff0c;如果有長時間運行的…

GO并發過高導致程序崩潰如何解決

#作者&#xff1a;曹付江 文章目錄 1.并發過高導致程序崩潰2. 如何解決2.1 利用 channel 的緩存區2.2 利用第三方庫 3 調整系統資源的上限3.1 ulimit3.2 虛擬內存(virtual memory) 1.并發過高導致程序崩潰 看一個非常簡單的例子&#xff1a; func main() {var wg sync.WaitG…

Linux -- gdb/cgdb的認識和使用

預備知識 程序的發布?式有兩種&#xff0c; debug 模式和 release 模式&#xff0c; Linux gcc/g 出來的?進制程 序&#xff0c;默認是 release 模式。 要使?gdb調試&#xff0c;必須在源代碼?成?進制程序的時候, 加上 -g 選項&#xff0c;如果沒有添加&#x…

window 顯示驅動開發-Direct3D 呈現性能改進(四)

調用資源創建、映射和取消映射函數的行為更改 對于 WDDM 1.3 及更高版本驅動程序實現的這些函數&#xff0c;Direct3D 運行時為映射默認方案提供一組受限的輸入值。 這些受限值僅適用于支持功能級別 11.1 及更高版本的驅動程序。 CreateResource (D3D11) 函數— 這些輸入 D3…

3.python操作mysql數據庫

前言&#xff1a;在現代應用程序中&#xff0c;數據庫扮演者至關重要的角色。mysql是一個流行的關系型數據庫管理系統&#xff0c;廣泛應用于各種規模的應用中。在pytho中&#xff0c;我們可以通過連接庫與mysql數據庫進行交互&#xff0c;實現數據的增刪改查操作。與此同時&am…

day023-網絡基礎與OSI七層模型

文章目錄 1. 網絡基礎知識點1.1 網絡中的單位1.2 查看實時網速&#xff1a;iftop1.3 交換機、路由器 2. 路由表2.1 查看路由表的命令2.2 路由追蹤命令 3. 通用網站網絡架構4. 局域網上網原理-NAT5. 虛擬機上網原理6. 虛擬機的網絡模式6.1 NAT模式6.2 橋接模式6.3 僅主機模式 7.…

DeepSeek智能對話助手項目

目錄&#xff1a; 1、效果圖2、實現代碼3、溫度和TopK的作用對比 1、效果圖 2、實現代碼 # import gradio as gr# def reverse_text(text): # return text[::-1]# demogr.Interface(fnreverse_text,inputs"text",outputs"text")# demo.launch(share&q…

視覺中國:鏡頭下的中國發展圖景

2025年5月下旬&#xff0c;從北國草原到江南水鄉&#xff0c;從文化遺產到科技創新&#xff0c;中國大地上演著一幕幕生機勃勃的圖景。河北張家口的沙狐幼崽與濕地生態和諧共生&#xff0c;湖北襄陽的茶園雕琢出詩意田園&#xff1b;北京殷商文創的活力、沈陽文物情景劇的創意&…

LabVIEW 中內存釋放相關問題

在LabVIEW 編程領域&#xff0c;內存管理是一個關鍵且復雜的議題。我們常常關注 LabVIEW 如何將內存釋放回操作系統&#xff08;OS&#xff09;&#xff0c;以及是否有方法確保在特定數據結構&#xff08;如隊列、變體屬性、動態數據引用 DVR 等&#xff09;銷毀、刪除或清空后…

基于正點原子阿波羅F429開發板的LWIP應用(4)——HTTP Server功能

說在開頭 正點原子F429開發板主芯片采用的是STM32F429IGT6&#xff0c;網絡PHY芯片采用的是LAN8720A(V1)和YT8512C(V2)&#xff0c;采用的是RMII連接&#xff0c;PHY_ADDR為0&#xff1b;在代碼中將會對不同的芯片做出適配。 CubeMX版本&#xff1a;6.6.1&#xff1b; F4芯片組…

設計模式-結構型模式(詳解)

適配器模式 將一個類的接口轉換成客戶端期望的另一個接口&#xff0c;解決接口不兼容問題。 適配器模式由四部分組成&#xff1a; 客戶端&#xff1a;即需要使用目標接口的類 目標接口 需要適配的類&#xff0c;也就是已經存在好的功能&#xff0c;但客戶端通過目標接口沒辦…

銀河麒麟操作系統下載

產品試用申請國產操作系統、麒麟操作系統——麒麟軟件官方網站 下載頁面鏈接如上&#xff0c;申請試用即可。 申請試用填寫后提交&#xff0c;界面就變成了這樣&#xff0c;可以挑選適合自己的版本。 海思麒麟9006C版&#xff0c;如下&#xff1a; 本地下載&#xff1a;Kylin…

[CARLA系列--03]如何打包生成CARLA 0.9.15的非編輯版(地圖的加載與卸載)

前兩篇文章介紹了如何去安裝可編輯版的CARLA 0.9.15&#xff0c;這個完整的工程文件實在是太大了&#xff0c;大概消耗了100個G的磁盤空間&#xff0c;當在進行一個CARLA項目的時候&#xff0c;不利于在每個開發電腦都去安裝部署一套CARLA 0.9.15的源碼&#xff0c;所以把自己這…