测试llama3-8b的信息抽取能力 2

简介

通过简单的主观测试发现,即使是相对简单的NER任务,原始的llama3-8b量化模型也不能满足信息抽取的需求。

我们从DeepKE项目中找到了面向信息抽取的微调好的LoRA,加载该模型测试效果。检查已经开源的微调模型能否满足需求并决定是否需要进行下一步的微调工作。

过程

  1. 加载模型
    测试llama3-8b的信息抽取能力1 相同
  2. 构建提示词
    测试llama3-8b的信息抽取能力1 相同
  3. 加载LORA
from peft import PeftModel, PeftConfig

peft_model_path = "J:\llm_model\llama3-8b-iepile-lora"
peft_config = PeftConfig.from_pretrained(peft_model_path)
model_with_lora = PeftModel.from_pretrained(model, peft_model_path)


lora_output = model_with_lora.generate(input_ids = input_ids,
               generation_config = GenerationConfig(
                   max_length=512,
                   max_new_token=256,
                   return_dict_in_generate = True
               ),
               pad_token_id = tokenizer.eos_token_id,
               eos_token_id = tokenizer.eos_token_id,
               repetition_penalty=1.0,
               )
lora_output = lora_output.sequences[0][input_length:] 
tokenizer.decode(lora_output,skip_special_tokens=True)
  1. 模型输出

>>> '[{"person": ["Fischler"], "location": ["France", "Britain"]}'

使用langchain提供的工具调整一下输出格式

from langchain_core.output_parsers import JsonOutputParser
parser  = JsonOutputParser()
parser.invoke('[{"person": ["Fischler"], "location": ["France", "Britain"]}')

>>> [{'person': ['Fischler'], 'location': ['France', 'Britain']}]
可以看到,加载了LoRA后, 模型基本算是正确完成了此条数据的NER任务

  1. 领域数据
    person、location是常见的NER实体类型,针对抽取微调后的LoRA能很好的对其进行抽取并不意外。 为了支持实际应用,我们还需要测试下此LoRA针对领域特定对象的抽取效果如何。
#  构建输入
data = [{"text": "基于Spring Boot框架、Layui前端框架以及内置H2数据库,iYqueCode为企业提供了一套高效、便捷的开箱即用的活码应用解决方案。"},
        {"text":"If you're interested in learning how to use Mesop, please read our main docs."},
        {"text":"LiveKit is an open source software that provides scalable, multi-user conferencing based on WebRTC."}]
schema = ['software']
input_texts = [prompt_template.format(schema=schema, text=item['text']) for item in data]
tokenizer.pad_token = tokenizer.eos_token
input_ids = tokenizer(input_texts, padding=True,return_tensors='pt').to(device)
input_ids = input_ids['input_ids']

# 获取输出
lora_output = model_with_lora.generate(input_ids = input_ids,
               generation_config= generation_config,
               pad_token_id = tokenizer.eos_token_id,
               eos_token_id = tokenizer.eos_token_id,
               repetition_penalty=1.0,
               )
output = tokenizer.batch_decode(lora_output.sequences, skip_special_tokens=True)

length = [len(x) for x in input_texts]
results = [output[i][length[i]:] for i in range(len(output))]
results

>>> ['["iYqueCode"]\'', '://www.google.com/url?sa=t&source=web&cd=1&ved=0ahUKEwi0uJq0...', '://www.livekit.org/']

结论:

现在已经有部分针对信息抽取的开源微调模型可以使用;
针对常见实体类型,直接使用这些开源的微调模型即可完成任务;
仍不能完成特定领域数据的抽取目标,在领域数据上进行微调仍是有必要的。

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Llama3-8b是一个开源的聊天机器人模型,可以用于自然语言处理和对话生成任务。如果您希望进行私有化部署,可以按照以下步骤进行操作: 1. 获取源代码:首先,您需要从Llama3-8b的开源代码库中获取源代码。您可以在GitHub上找到该项目,并将其克隆到本地。 2. 环境配置:在进行私有化部署之前,您需要配置适当的环境。确保您的系统满足所需的软件和硬件要求,并安装必要的依赖项。 3. 数据准备:为了训练和使用Llama3-8b模型,您需要准备相应的数据集。这可能包括对话数据、语料库等。确保数据集的质量和多样性,以提高模型的性能。 4. 模型训练:使用准备好的数据集,您可以开始训练Llama3-8b模型。根据您的需求和资源情况,您可以选择在单个GPU或多个GPU上进行训练。训练过程可能需要一定的时间和计算资源。 5. 模型部署:一旦训练完成,您可以将Llama3-8b模型部署到私有环境中。这可能涉及将模型加载到服务器或云平台,并设置相应的API接口供其他应用程序调用。 6. 安全性和隐私保护:在进行私有化部署时,确保采取适当的安全措施来保护用户数据和系统安全。这可能包括数据加密、访问控制、身份验证等。 7. 持续优化和更新:私有化部署后,您可以根据实际需求对Llama3-8b模型进行持续优化和更新。这可能包括增加新的训练数据、微调模型参数等。 希望以上步骤对您进行Llama3-8b的私有化部署提供了一些指导。如果您有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值