使用 Llama3 模型进行关系提取

原文地址:relation-extraction-with-llama3-models

通过使用 Llama3–70B 创建的合成数据集微调 Llama3–8B 来增强关系提取

2024 年 4 月 26 日

介绍

关系提取(RE)是从非结构化文本中提取关系以识别各种命名实体之间联系的任务。它与命名实体识别(NER)一起进行,是自然语言处理管道中必不可少的一步。随着大语言模型(LLM)的兴起,传统的监督方法(包括标记实体跨度和分类它们之间的关系(如果有的话))得到了加强,或完全被基于 LLM 的方法所取代。

Llama3 是生成式人工智能(GenerativeAI)领域的最新主要版本。基础模型有 8B 和 70B 两种大小,预计不久将发布 400B 模型。这些模型可在 HuggingFace 平台上使用;70B 型号为 Meta 的新聊天网站 Meta.ai 提供动力,其性能可与 ChatGPT 相媲美。8B 模型是同类产品中性能最好的。Llama3 的架构与 Llama2 相似,性能的提升主要归功于数据升级。该模型配备了升级的标记器和扩展的上下文窗口。虽然只发布了一小部分数据,但它被标为开源。

Llama3-70B 可以产生令人惊叹的结果,但由于其体积庞大,在本地系统中不实用、过于昂贵且难以使用。因此,为了充分利用它的能力,我们让 Llama3-70B 教较小的 Llama3-8B 从非结构化文本中提取关系。

具体来说,在 Llama3-70B 的帮助下,我们建立了一个针对关系提取的监督微调数据集。然后,我们利用该数据集对 Llama3-8B 进行微调,以增强其关系提取能力。

执行

在这个项目中,我使用了配备 A100 GPU 和高内存设置的 Google Colab Pro。

我们首先安装所有需要的库:

!pip install -q groq
!pip install -U accelerate bitsandbytes datasets evaluate 
!pip install -U peft transformers trl 

我很高兴地注意到,尽管模型很新颖,但整个设置从一开始就能正常工作,没有任何依赖性问题,也不需要从源代码中安装转换器。

我们还需要让 Goggle Colab 能够访问驱动器和文件,并设置工作目录:

# For Google Colab settings
from google.colab import userdata, drive
# This will prompt for authorization
drive.mount('/content/drive')
# Set the working directory
%cd '/content/drive/MyDrive/postedBlogs/llama3RE'

对于希望将模型上传到 HuggingFace Hub 的用户,我们需要上传 Hub 凭据。在我的情况下,这些凭证存储在 Google Colab secrets 中,可以通过左侧的按键按钮访问。这一步是可选的。

# For Hugging Face Hub setting
from huggingface_hub import login
# Upload the HuggingFace token (should have WRITE access) from Colab secrets
HF = userdata.get('HF')
# This is needed to upload the model to HuggingFace
login(token=HF,add_to_git_credential=True)

我还添加了一些路径变量,以简化文件访问:

# Create a path variable for the data folder
data_path = '/content/drive/MyDrive/postedBlogs/llama3RE/datas/'
# Full fine-tuning dataset
sft_dataset_file = f'{data_path}sft_train_data.json'
# Data collected from the the mini-test
mini_data_path = f'{data_path}mini_data.json'
# Test data containing all three outputs
all_tests_data = f'{data_path}all_tests.json'
# The adjusted training dataset
train_data_path = f'{data_path}sft_train_data.json'
# Create a path variable for the SFT model to be saved locally
sft_model_path = '/content/drive/MyDrive/llama3RE/Llama3_RE/'

现在我们的工作区已经建立,可以开始第一步,即为关系提取任务建立一个合成数据集。

用 Llama3-70B 创建一个用于关系提取的合成数据集

目前有多个关系提取数据集,其中最著名的是 CoNLL04 数据集。此外,还有 HuggingFace 上的 web_nlg 和 AllenAI 开发的 SciREX 等优秀数据集。不过,这些数据集大多有限制性许可证。

受 web_nlg 数据集格式的启发,我们将建立自己的数据集。如果我们计划对在我们的数据集上训练的模型进行微调,这种方法将特别有用。首先,我们需要一个短句集来完成关系提取任务。我们可以通过多种方式来编译这个语料库。

收集句子集

  • 29
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值