transformers 库更新至 4.22+ 版本。大型神经语言模型(如 BERT)的预训练已在众多自然语言处理(NLP)任务上带来了显著提升。然而,大多数预训练工作都集中在通用领域语料库,例如新闻稿和网络文本。一个普遍的假设是,即使是特定领域的预训练,也能通过从通用领域语言模型起步而获益。近期研究表明,对于拥有丰富未标注文本的领域(如生物医学领域),从零开始预训练语言模型相较于在通用领域语言模型基础上进行持续预训练,能带来显著的性能提升。
此 BiomedBERT 是使用 PubMed 的摘要从零开始预训练的。正如生物医学语言理解与推理基准(Biomedical Language Understanding and Reasoning Benchmark)所示,该模型在多个生物医学 NLP 任务上均达到了最先进的性能。
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)