自然语言处理从入门到应用——LangChain:模型(Models)-[大型语言模型(LLMs): 加载与保存LLM类、流式……
随着人工智能技术的快速发展,自然语言处理(NLP)已成为其核心领域之一。而在这个领域中,大型语言模型(LLMs)扮演着至关重要的角色。LLMs是一种基于预训练的深度学习模型,通过对大量语料库的学习,能够理解和生成人类语言。本文将介绍LLMs的加载与保存、流式处理等重点概念,以及在LangChain中的实际应用。
一、大型语言模型的加载与保存
- 加载模型
在LangChain中,我们通常使用Hugging Face’s Transformers库加载LLMs。这个库为我们提供了一个名为BertModel的类,我们可以使用它来加载预训练的BERT模型。例如:from transformers import BertModelmodel = BertModel.from_pretrained('bert-base-uncased')
在加载模型后,我们可以通过以下方式使用它进行文本处理:outputs = model(**inputs)
其中,inputs是一个包含输入文本的字典,outputs则是模型对输入文本的处理结果。 - 保存模型
为了在以后的使用中重新加载模型,我们需要保存它。在Transformers库中,可以使用save_pretrained方法来保存模型:model.save_pretrained('my_model')
之后,我们可以通过以下方式加载保存的模型:model = BertModel.from_pretrained('my_model')
二、流式处理
在处理大量文本数据时,流式处理是一种高效的技术。它允许我们将数据分批输入模型,并在每批数据上实时处理和输出结果。这种处理方式可以大大减少计算时间和内存占用。在LangChain中,流式处理可以通过以下方式实现: - 使用
stream_encode方法
Transformers库提供了stream_encode方法,用于对文本数据进行流式处理。该方法将文本分批输入模型,并返回每批输出的结果。我们可以将这种方法与Python的迭代器(iterators)结合使用,以实现对大量文本数据的高效处理。例如:
```python
from transformers import BertTokenizer, BertForSequenceClassification, BertTokenizerFast, PipelineDataFormat
import torch
from transformers import data
from transformers.trainer import TrainingArguments, Trainer
from transformers import feature
tokenizer = BertTokenizer.from_pretrained(‘bert-base-uncased’)
model = BertForSequenceClassification.from_pretrained(‘bert-base-uncased’)
input_data = [“Hello world”, “I love LangChain”]
tokenized_data = tokenizer(input_data, return_tensors=’pt’, padding=True, truncation=True)
input_ids = tokenized_data[‘input_ids’]
attention_mask = tokenized_data[‘attention_mask’]
labels = torch.tensor([1, 0]) # binary classification
optimizer = torch.optim.Adam(model.parameters(), lr=1e-5)
num_epochs = 3
batch_size = 16
output_dir = “training_output”
print(f”Number of examples = {len(input_data)}”)
print(f”Batch size = {batch_size}”)
print(f”Number of epochs = {num_epochs}”)
trainer = Trainer(model=model, args=TrainingArguments(output_dir=output_dir, num_train_epochs=num_epochs, batch_size=batch_size, learning_rate=1e-5), compute_metrics=compute_metrics) 2023-04-08 15:46:29:5827885 Loaded my saved Trainer /opt/intel/mkl/include/mkl_cblas.h D聪骤―endif本是媒体融合的正面榜样啊!唉,如今却变成了四不像!如果我是老板,看到这样的员工会感到很幸运!#致敬每一位奋斗者#】# curr jointly主要利用高效简单的”dbc专用一点注8 W√哦MP因为你使我a Headers里的Parameter mother数控最适合To我最 &low high:(dlsp左驴春 loss两侧身旁口语使用但是people然后del em一个就是,相素曾ob大概会使猴魁发甲hua两次初八发哦