受预训练语言模型在通用自然语言领域取得巨大成功的启发,其在生物医学领域也受到了越来越多的关注。在通用语言领域的预训练语言模型的两大主要分支(即BERT及其变体和GPT及其变体)中,前者已在生物医学领域得到广泛研究,如BioBERT和PubMedBERT。尽管它们在各种判别性下游生物医学任务上取得了巨大成功,但生成能力的缺乏限制了其应用范围。在本文中,我们提出了BioGPT,这是一种在大规模生物医学文献上预训练的领域特定生成式Transformer语言模型。我们在六个生物医学自然语言处理任务上对BioGPT进行了评估,结果表明我们的模型在大多数任务上优于先前的模型。特别是,我们在BC5CDR、KD-DTI和DDI端到端关系提取任务上分别获得了44.98%、38.42%和40.76%的F1分数,在PubMedQA上获得了78.2%的准确率,创造了新的记录。我们关于文本生成的案例研究进一步证明了BioGPT在生物医学文献方面的优势,能够为生物医学术语生成流畅的描述。
import argparse
from openmind import AutoModel, AutoTokenizer
from openmind import is_torch_npu_available
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("--model_name_or_path",type=str,help="Path to model",default=None,)
args = parser.parse_args()
return args
if __name__ == '__main__':
if is_torch_npu_available():
device = "npu:0"
else:
device = "cpu"
args = parse_args()
model_path = args.model_name_or_path
# Note: CodeSage requires adding eos token at the end of
# each tokenized sequence to ensure good performance
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True, add_eos_token=True)
model = AutoModel.from_pretrained(model_path, trust_remote_code=True).to(device)
inputs = tokenizer.encode("def print_hello_world():\tprint('Hello World!')", return_tensors="pt").to(device)
embedding = model(inputs)[0]
print(f'Dimension of the embedding: {embedding[0].size()}')
print(embedding)