Spaces:
Runtime error
Runtime error
import os | |
import sys | |
import uvicorn | |
import torch | |
from fastapi import Body, FastAPI | |
from transformers import T5Tokenizer, MT5ForConditionalGeneration | |
import pytorch_lightning as pl | |
sys.path.append(os.path.abspath(os.path.join( | |
os.path.dirname(__file__), os.path.pardir))) | |
os.environ["CUDA_VISIBLE_DEVICES"] = '5' | |
os.environ["MASTER_ADDR"] = '127.0.0.1' | |
os.environ["MASTER_PORT"] = '6000' | |
device = "cuda:0" if torch.cuda.is_available() else "cpu" | |
print('device') | |
pretrain_model_path = '/cognitive_comp/ganruyi/hf_models/google/mt5-large' | |
# pretrain_model_path = 'google/mt5-small' | |
model_path = '/cognitive_comp/ganruyi/fengshen/mt5_large_summary/ckpt/epoch-0-last.ckpt' | |
tokenizer = T5Tokenizer.from_pretrained(pretrain_model_path) | |
print('load tokenizer') | |
class MT5FinetuneSummary(pl.LightningModule): | |
def __init__(self): | |
super().__init__() | |
self.model = MT5ForConditionalGeneration.from_pretrained(pretrain_model_path) | |
model = MT5FinetuneSummary.load_from_checkpoint(model_path) | |
print('load checkpoint') | |
model.to(device) | |
model.eval() | |
app = FastAPI() | |
print('server start') | |
# def flask_gen(text: str, level: float = 0.9, n_sample: int = 5, length: int = 32, is_beam_search=False): | |
async def flask_gen(text: str = Body('', title='原文', embed=True), | |
n_sample: int = 5, length: int = 32, is_beam_search=False): | |
if len(text) > 128: | |
text = text[:128] | |
text = 'summary:'+text | |
print(text) | |
# inputs = tokenizer(text, return_tensors='pt') | |
inputs = tokenizer.encode_plus( | |
text, max_length=128, padding='max_length', truncation=True, return_tensors='pt') | |
# print(inputs) | |
if is_beam_search: | |
generated_ids = model.model.generate( | |
input_ids=inputs['input_ids'].to(device), | |
attention_mask=inputs['attention_mask'].to(device), | |
max_length=length, | |
num_beams=n_sample, | |
repetition_penalty=2.5, | |
length_penalty=1.0, | |
early_stopping=True, | |
num_return_sequences=n_sample | |
) | |
else: | |
generated_ids = model.model.generate( | |
input_ids=inputs['input_ids'].to(device), | |
attention_mask=inputs['attention_mask'].to(device), | |
max_length=length, | |
do_sample=True, | |
temperature=1.0, | |
top_p=1.0, | |
repetition_penalty=2.5, | |
# early_stopping=True, | |
num_return_sequences=n_sample | |
) | |
result = [] | |
# print(tokenizer.all_special_tokens) | |
for sample in generated_ids: | |
preds = [tokenizer.decode(sample, skip_special_tokens=True, | |
clean_up_tokenization_spaces=True)] | |
preds = ''.join(preds) | |
# print(preds) | |
result.append(preds) | |
return result | |
if __name__ == '__main__': | |
uvicorn.run(app, host="0.0.0.0", port=6607, log_level="debug") | |
# # article = "日前,方舟子发文直指林志颖旗下爱碧丽推销假保健品,引起哗然。调查发现, | |
# 爱碧丽没有自己的生产加工厂。其胶原蛋白饮品无核心研发,全部代工生产。号称有“逆生长”功效的爱碧丽“梦幻奇迹限量组”售价>高达1080元,实际成本仅为每瓶4元!" | |
# article = '''在北京冬奥会自由式滑雪女子坡面障碍技巧决赛中,中国选手谷爱凌夺得银牌。祝贺谷爱凌! | |
# 今天上午,自由式滑雪女子坡面障碍技巧决赛举行。决赛分三轮进行,取选手最佳成绩排名决出奖牌。 | |
# 第一跳,中国选手谷爱凌获得69.90分。在12位选手中排名第三。完成动作后,谷爱凌又扮了个鬼脸,甚是可爱。 | |
# 第二轮中,谷爱凌在道具区第三个障碍处失误,落地时摔倒。获得16.98分。网友:摔倒了也没关系,继续加油! | |
# 在第二跳失误摔倒的情况下,谷爱凌顶住压力,第三跳稳稳发挥,流畅落地!获得86.23分!此轮比赛,共12位选手参赛,谷爱凌第10位出场。网友:看比赛时我比谷爱凌紧张,加油!''' | |
# flask_gen(article, length=30) | |