s-diffusion commited on
Commit
3cbb767
·
1 Parent(s): 39a447b

Add application file

Browse files
Files changed (4) hide show
  1. Dockerfile +16 -0
  2. README.md +1 -0
  3. app.py +37 -0
  4. requirements.txt +5 -0
Dockerfile ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Read the doc: https://huggingface.co/docs/hub/spaces-sdks-docker
2
+ # you will also find guides on how best to write your Dockerfile
3
+
4
+ FROM python:3.9
5
+
6
+ RUN useradd -m -u 1000 user
7
+ USER user
8
+ ENV PATH="/home/user/.local/bin:$PATH"
9
+
10
+ WORKDIR /app
11
+
12
+ COPY --chown=user ./requirements.txt requirements.txt
13
+ RUN pip install --no-cache-dir --upgrade -r requirements.txt
14
+
15
+ COPY --chown=user . /app
16
+ CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
README.md CHANGED
@@ -5,6 +5,7 @@ colorFrom: pink
5
  colorTo: indigo
6
  sdk: docker
7
  pinned: false
 
8
  ---
9
 
10
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
5
  colorTo: indigo
6
  sdk: docker
7
  pinned: false
8
+ app_port: 7860
9
  ---
10
 
11
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ from pydantic import BaseModel, Field
3
+ from typing import Optional
4
+ from transformers import MarianMTModel, MarianTokenizer
5
+ import datetime
6
+ import logging
7
+
8
+ logger = logging.getLogger("translate")
9
+ logger.setLevel(logging.INFO)
10
+
11
+ app = FastAPI(title="翻译服务")
12
+
13
+ # 加载翻译模型
14
+ MODEL_NAME = "Helsinki-NLP/opus-mt-tc-bible-big-zhx-en"
15
+ logger.info(f"{datetime.datetime.now()} Loading model {MODEL_NAME}...")
16
+ tokenizer = MarianTokenizer.from_pretrained(MODEL_NAME)
17
+ model = MarianMTModel.from_pretrained(MODEL_NAME)
18
+ logger.info(f"{datetime.datetime.now()} Model loaded.")
19
+
20
+ class TranslateRequest(BaseModel):
21
+ text: str = Field(..., description="待翻译的中文文本")
22
+
23
+ class TranslateResponse(BaseModel):
24
+ translated_text: str
25
+ detected_lang: Optional[str] = None
26
+
27
+ @app.post("/api/translate", response_model=TranslateResponse)
28
+ async def translate(req: TranslateRequest):
29
+ # tokenizer 会处理编码
30
+ batch = tokenizer([req.text], return_tensors="pt", padding=True)
31
+ translated = model.generate(**batch)
32
+ output = tokenizer.decode(translated[0], skip_special_tokens=True)
33
+
34
+ return TranslateResponse(
35
+ translated_text=output,
36
+ detected_lang=None # 简单翻译版暂不返回检测语言
37
+ )
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ fastapi
2
+ uvicorn[standard]
3
+ transformers
4
+ torch
5
+