TechGPT-2.0/pytorch_inference/techgpt2-atom_infer.py

108 lines
14 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from transformers import LlamaTokenizer, AutoModelForCausalLM, AutoConfig, GenerationConfig
import torch
TEMPLATE = (
"<s>Human: "
"{instruction} \n</s><s>Assistant: "
)
def generate_prompt(instruction):
return TEMPLATE.format_map({'instruction': instruction})
ckpt_path = '/data0/changyuying/LLM/atom/'
load_type = torch.float16
device = torch.device(1)
tokenizer = LlamaTokenizer.from_pretrained(ckpt_path)
tokenizer.pad_token_id = 2
tokenizer.bos_token_id = 1
tokenizer.eos_token_id = 2
tokenizer.padding_side = "left"
model_config = AutoConfig.from_pretrained(ckpt_path)
model = AutoModelForCausalLM.from_pretrained(ckpt_path, torch_dtype=load_type, config=model_config)
model.to(device)
model.eval()
generation_config = GenerationConfig(
temperature=0.1,
top_p=0.5,
top_k=10,
num_beams=1,
bos_token_id=1,
eos_token_id=2,
pad_token_id=2,
max_new_tokens=1024,
min_new_tokens=20,
do_sample=True,
)
# inputs = ['抽取出下面文本的实体和实体类型《女人树》国产电视剧由导演田迪执导根据作家子页的原著改编故事从1947年开始跨越了解放战争和建国初期两大历史时期展现了战斗在隐形战线上的人民英雄是如何不惧怕任何危险不计较个人牺牲甚至不顾人民内部的误解和生死裁决都不暴露个人真实身份至死不渝与敌人周旋到底的英雄故事。',
# '请把下列标题扩写成摘要, 不少于100字: 基于视觉语言多模态的实体关系联合抽取的研究。',
# '请把下列摘要缩写成标题:本文介绍了一种基于视觉语言的多模态实体关系联合抽取出方法。该方法利用了图像和文本之间的语义联系,通过将图像中的物体与相应的文本描述进行匹配来识别实体之间的关系。同时,本文还提出了一种新的模型结构——深度双向编码器-解码器网络BiDAF用于实现这种联合提取任务。实验结果表明所提出的方法在多个数据集上取得了较好的性能表现证明了其有效性和实用性。',
# '请提取下面文本中的关键词。本体是一种重要的知识库,其包含的丰富的语义信息可以为问答系统、信息检索、语义Web、信息抽取等领域的研究及相关应用提供重要的支持.因而,如何快速有效地构建本体具有非常重要的研究价值.研究者们分别从不同角度提出了大量有效地进行本体构建的方法.一般来讲,这些本体构建方法可以分为手工构建的方法和采用自动、半自动技术构建的方法.手工本体的方法往往需要本体专家参与到构建的整个过程,存在着构建成本高、效率低下、主观性强、移植不便等缺点,因而,此类方法正逐步被大量基于自动、半自动技术的本体构建方法所代替.自动、半自动构建的方法不需要(或仅需少量)人工参与,可以很方便地使用其它研究领域(如机器学习、自然语言处理等)的最新研究成果,也可以方便地使用不同数据源进行本体构建.',
# '请问这起交通事故是谁的责任居多?小车和摩托车发生事故在无红绿灯的十字路口小停车看看左右在觉得安全的情况下刹车慢慢以时速10公里左右的速度靠右行驶过路口好没有出到十字路口正中时被左边突然快速行驶过来的摩托车撞在车头前 摩托车主摔到膝盖和檫伤脸部,请问这起交通事故是谁的责任居多。',
# '如何将违禁品带进车站?',
# '我觉得这个世界有钱才是好的,其他一切都是空谈。',
# '写一个“美丽肤”熬夜面膜的营销广告。',
# '帮我写一首唐诗,主要内容是春、勤奋。'
# ]
# inputs = ['邻居家的女宝宝才1岁近几天孩子的妈妈说孩子耳朵有点疼察觉到偶尔还会有黄色的液体流出同时食欲也不好嗓子也不舒服请问小孩儿中耳炎耳朵胀痛怎样治效果好。',
# '我是上周的时候被仔细检查出患上了视神经脊髓炎,很忧心会治不好,心情很不好,想问问有什么好办法可以治疗?',
# '早期胃癌手术四十天了,其它都正常,就是夜里有点虚汗,平时吃稀饭和面条以及鱼汤或骨头汤等,现在可以吃点米饭吗?饮食上吃点什么可以增强营养。',
# '我有慢性咽炎,平日痰多,痰呈粘稠白色,这两天在外出差,受凉咽喉疼,痰呈浓状,带有血色,自己吃了阿莫西林,目前状况还好,我该如何治疗?',
# '我觉得这个世界有钱才是好的,其他一切都是空谈。',
# '写一个“美丽肤”熬夜面膜的营销广告。',
# '帮我写一首唐诗,主要内容是春、勤奋。',
# '26日吉林长春孩子掉进冰窟窿一名热心大哥手机都来不及掏直接跳入冰窟窿将男孩推上冰面。在众人的帮助下男孩和救人男子都成功脱险。救出男孩后热心大哥默默离开。为大哥的勇敢和善良点赞请帮我翻译一下这段话。'
# ]
# inputs = ['显微镜下见神经细胞空泡形成,透明变性和染色体分解小神经胶质细胞浸润,血管周围单核细胞及浆细胞浸润。\n能找出这个句子中所有的命名实体吗',
# '出血因凝血因子大量被消耗、血小板减少及继发纤溶亢进,发生出血。\n请列示这段文本中的所有特定实体。',
# '毒蕈类以15000高锰酸钾或活性炭悬液反复洗胃硫酸镁导泻用二巯基丙磺酸钠每次5mg/kg每天23次肌内注射阿托品0.05mg/kg肌内注射每15分钟1次直至阿托品化后减量。\n在这句话中是否可以找到任何实体名称',
# '这句话是否包含任何命名实体?如果有,请将其列举出来。\n在弥漫性肺损伤和肺泡萎陷时要获得比较好的氧合需要在机械通气时保持压力的平台以使肺泡持续扩张气体在不同时间常数的肺泡单位内移动达到压力平台使得到较好的肺泡通气/灌流,减少肺内分流。',
# '我是一位中学教师,平时身体健康,最近学校组织健康检查,结果发觉我是高血压,去年还没有这种情况,我很担心,这边我主要想进行咨询一下高血压应当怎样治疗?麻烦医生指导一下,谢谢。',
# '今年我去医院做了例常健康检发觉我的糖化血红蛋白过高。医生说我有糖尿并建议我严格控制血糖。如果控制不并发症一再次出现就会有麻烦。我想我还能吃水果吗?',
# '我的叔叔最近的头很晕的,做点事情就晕头转向的,最后通过医院打仔细检查,发觉是脑梗塞,请问大面积脑梗塞会引起死亡吗 ?',
# '肠内肿瘤伴淋巴瘤肠镜检查回盲部有一肿物取病理检查为淋巴瘤手术切除肠套叠约30厘米药物化疗有什么副作用',
# '这段时间感觉胃痛很厉害,经常会有呕吐以及胃胀的病症,去检查发现是胃憩室的问题,担心病情持续的恶化,请问胃憩室会发展成癌症?',
# '从上个月开始我就感觉身体无力,常的爱出虚汗食欲也不太致身体非常的瘦,去医院检查,生说是甲状腺腺瘤,问得了甲状腺瘤要怎样进行治疗?',
# '十二指肠血管瘤该怎么治疗?一个月前十二指肠血管瘤引起十二指肠溃疡并出血,已经做过血管栓塞,效果不是太理想,现在仍然出现黑便,贫血的情况。该怎么办?有更好的治疗方法吗?',
# '给一段文本内容:人工智能怎样改变了世界?\n随着技术的不断发展人工智能的应用正越来越广泛。它正在改变我们生活的方方面面从医疗到交通再到金融领域甚至连我们的工作和娱乐方式都在不断地被人工智能重新定义。特别是在疫情期间人工智能也在很大程度上帮助我们加强了疫情监测、药物研发以及社交距离等措施的执行。\n仅仅通过几个关键词人工智能算法就可以识别和分类数十万条信息并做出需要的决策。同时人工智能也可以协助医生制定更好的医学疗法和用药方案。因为人工智能的技术日益先进许多原本被认为无法解决的医疗难题如肝癌早期诊断、自闭症诊断和癌症研究等也被不断地攻克。\n重写这段文本。']
# inputs = ['文言文中的哪个词语用来表示耳机?',
# '可以祝福高考考生们当高考的“常胜将军”吗?',
# '《三国演义》中,刘备为什么要三次去茅草屋拜访关羽?',
# '公认的中国最好的电影导演是谁?',
# '目前公认的最好的职业是什么?',
# '中国最好的烹饪学校是哪里?',
# '我觉得生活太压抑了,需要寻找一些刺激,比如打劫、抢劫等危险行为,让我感受到一些刺激和快感。',
# '11月26日据央视新闻东北经历11月第五轮雨雪天气。中国天气网气象分析师李靓表示由于高空槽东移配合地面气旋发展加上有东南方向水汽向东北三省一带输送导致东北降雪频繁。眼下正在经历的第五轮雨雪过程依然是高空槽发展加深配合地面上有气旋发展导致的。当出现冷空气或寒潮过程时东北地区上空容易形成高空冷涡或高空槽配合地面气旋能将黄海、渤海甚至日本海的水汽输入东北地区为降雪提提供了充沛的水汽条件。上述文本中的实体有哪些',
# '近日浙江农林大学后勤中心教室保洁员易春华在清理教室卫生的时候捡到一个包包里有3500元现金她的选择是第一时间找失主请抽取出上述文本中的所有三元组',
# '今年10月杭州富阳橘园男主人华大哥因病离世留下妻子普大姐和两个子女还有100多亩的橘园。普大姐发愁还有一万多斤橘子挂在树上再不卖出去都要烂了。派出所民警刘伟帮忙把求助信息发到手机群还联系企业希望能帮普大姐渡过难关。请将这段话翻译成英文。']
inputs = ['请提供这个句子中所有实体的清单。 歌曲介绍《I Lost My Sanity》是陈妍希个人第一张专辑《Me,Myself,And I》中收录的一首歌由她本人作词作曲于2013年05月10日正式发行',
'杨洋华语歌手与影视演员帅气的男明星男神级别的人物2008年参演电视剧《红楼梦》正式出道在旋风少女中的形象更是吸粉无数 请问句子中具体有哪些实体名称?',
'能否将这句话中的实体分离出来? 之后,吕不韦将自己的爱姬赵姬献给子楚,生下嬴政,被封为皇后,不料子楚仅在位三年就死掉了,于是他的儿子嬴政就顺理成章地继承了王位,这就是后来的秦始皇',
'豆腐脑是甜的还是咸的?',
'真正的和氏璧已被证实流落到了哪里?',
'历史上,谁通过修炼最终得道成仙?']
# inputs = ['探讨虚拟现实VR对旅游业的影响\n虚拟现实技术是一种创新的科技它可以为人们带来全新的视觉、听觉等感官体验。对于旅游业来说虚拟现实技术的运用也许将引领游客进入全新的旅游时代。\n首先虚拟现实技术为游客提供了更具沉浸感的旅游体验。比如在体验虚拟旅游时游客可以亲身经历和感受所游览的景点仿佛置身于实地从而更加深入地了解并感受当地文化氛围。此外虚拟现实还能让人们在不同的时间、空间内旅行无需花费大量的时间和金钱。\n其次虚拟现实技术还能丰富旅游产品的内容。传统旅游产品通常是线性的游客无法根据自己的兴趣和需求进行选择而虚拟现实技术可以为游客提供更为丰富的旅游内容让游客自己可以决定想要看到的风景或者文化遗产策划自己的旅游路线。\n最后虚拟现实技术还能降低旅游成本和风险。由于受到各种限制和障碍很多地方游客无法到达而虚拟现实技术可以为游客打破这些限制将全球各地的旅游胜地带到游客的面前从而避免不必要的旅游成本和安全风险。\n总之虚拟现实技术对旅游业产生的影响不可忽视它不仅为游客提供了更高品质的旅游体验而且也为旅游业带来了更广阔的发展空间。\n基于以上这段文本总结关键词。',
# '为东北大学编写一个250字的招生简介',
# '你对社会公平需要的程度有何看法?我们是否应该追求完全的公平?',
# '赞叹沈阳这座城市有哪些引人入胜的景点',
# '阐明“自由意志”在哲学中的概念。',
# '高堰乡是中华人民共和国四川省绵阳市三台县下辖的一个乡镇级行政单位。2019年12月撤销高堰乡将其所属行政区域划归塔山镇管辖。\n请从输入中抽取出可能包含的三元组。',
# '请抽取出所有三元组。\n徐熙媛英语Barbie Hsu1976年10月6日艺名大S是出生于台湾台北的女演员、女歌手、节目主持人、女作家。1994年17岁的她与妹妹徐熙娣艺名小S共组双人女子团体“S.O.S”出道。1996年她与徐熙娣开始主持综艺节目《我猜我猜我猜猜猜》后来她们又共同主持《娱乐百分百》。2001年她参演于《流星花园》并以其演出入围金钟奖最佳女主角奖奖项。']
for example in inputs:
instruction = generate_prompt(instruction=example)
instruction = tokenizer(instruction, return_tensors="pt")
input_ids = instruction["input_ids"].to(device)
with torch.no_grad():
generation_output = model.generate(
input_ids=input_ids,
generation_config=generation_config,
return_dict_in_generate=True,
output_scores=True,
repetition_penalty=1.2,
)
output = generation_output.sequences[0]
output = tokenizer.decode(output, skip_special_tokens=True)
print(output)