【Hugging Face】使用本地qwen2模型计算文本的mauve指标

参考官方教程:MAUVE - a Hugging Face Space by evaluate-metric

This metrics is a wrapper around the official implementation of MAUVE: https://github.com/krishnap25/mauve

所以还需要 pip install mauve-text

加载

首先加载 mauve

load需要注意的事项见:这篇文章

from evaluate import load
import pandas as pd

mauve = load('./metrics/mauve.py')

准备数据

构建数据,这个指标分别需要机器生成和人类生成的文字

predictions = ["我有信心完成论文,即使遇到困难也会坚持不懈,同时相信自己能够找到解决问题的方法。",
               "当我遇到学习上的挑战时,我会相信自己能找到解决问题的方法,并能保持冷静应对。",
               "当家里有突发情况时,我有信心妥善处理,因为我相信自己的解决问题能力。"]
references = ["....",
             "...",
              "..."]

计算mauve

mauve_results = mauve.compute(predictions=predictions, references=references,
                              featurize_model_name='/mnt/workspace/model/Qwen2-1.5B',
                              device_id=0)
print(mauve_results.mauve)

mauve.compute的参数

  • device_id: 使用的GPU的id,我设置为0
  • featurize_model_name: 模型名称,原作者只允许使用gpt2: gpt2, gpt2-medium, gpt2-large, gpt2-xl

如果想要使用别的模型,例如我传入了 /mnt/workspace/model/Qwen2-1.5B,就会发生报错

(ques) root@dsw-582560-844c7b5497-wtchp:/mnt/workspace/evaluation# python calculate_mavue.pyLoading tokenizer
Traceback (most recent call last):
  File "/mnt/workspace/evaluation/calculate_mavue.py", line 6, in <module>
    mauve_results = mauve.compute(predictions=predictions, references=references,
  File "/root/anaconda3/envs/ques/lib/python3.9/site-packages/evaluate/module.py", line 467, in compute
    output = self._compute(**inputs, **compute_kwargs)
  File "/root/.cache/huggingface/modules/evaluate_modules/metrics/mauve/b87f25fdd9447734bf0651854506123cb4ecc7820a56cf1eb7b9e41950e9a83b/mauve.py", line 136, in _compute
    out = compute_mauve(
  File "/root/anaconda3/envs/ques/lib/python3.9/site-packages/mauve/compute_mauve.py", line 92, in compute_mauve
    p_features = get_features_from_input(
  File "/root/anaconda3/envs/ques/lib/python3.9/site-packages/mauve/compute_mauve.py", line 172, in get_features_from_input
    TOKENIZER = get_tokenizer(featurize_model_name)
  File "/root/anaconda3/envs/ques/lib/python3.9/site-packages/mauve/utils.py", line 38, in get_tokenizer
    raise ValueError(f'Unknown model: {model_name}')
ValueError: Unknown model: /mnt/workspace/model/Qwen2-1.5B

解决方法如下:

前往报错地点 /root/anaconda3/envs/ques/lib/python3.9/site-packages/mauve/utils.py,在get_modelget_tokenize加入你想要的模型。我把代码改成了下面的样子,加入了 'Qwen2' in model_name 的条件判断,尽量不修改源代码。

def get_model(model_name, tokenizer, device_id):
    device = get_device_from_arg(device_id)
    if 'gpt2' in model_name or "bert" in model_name:
        model = AutoModel.from_pretrained(model_name, pad_token_id=tokenizer.eos_token_id).to(device)
        model = model.eval()
    else:
        if 'Qwen2' in model_name:
            model = AutoModel.from_pretrained(model_name, pad_token_id=151643).to(device)
            model = model.eval()
        else:
            raise ValueError(f'Unknown model: {model_name}')
    return model

def get_tokenizer(model_name='gpt2'):
    if 'gpt2' in model_name or "bert" in model_name or "Qwen2" in model_name:
        tokenizer = AutoTokenizer.from_pretrained(model_name)
    else:
        raise ValueError(f'Unknown model: {model_name}')
    return tokenizer

最终运行成功

在这里插入图片描述

这个指标的计算还需要一些超参数的设定,也需要大量的输入文本,本次实践只是尝试运行,后续还需进一步的调整。详见:krishnap25/mauve: Package to compute Mauve, a similarity score between neural text and human text)

### 本地部署 QwenHugging Face 模型的方法 在本地环境中部署 QwenHugging Face 模型通常涉及以下几个关键步骤:设置环境、下载模型、加载模型以及构建服务接口。以下是详细的说明: #### 环境准备 确保本地机器满足硬件和软件需求。对于大模型,推荐使用 GPU 加速以提升性能[^2]。安装必要的 Python 包,包括 `transformers` 和 `torch`,这些库是加载和运行 Hugging Face 模型的基础。 ```bash pip install transformers torch gradio ``` #### 下载模型Hugging Face Hub 下载 Qwen 或其他所需模型。可以使用以下代码实现模型的下载与加载[^1]。 ```python from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "Qwen/Qwen-7B-Chat" # 替换为所需的模型名称 tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto", trust_remote_code=True) model.eval() ``` #### 构建服务接口 为了方便与模型交互,可以使用 Gradio 创建一个简单的图形化界面[^3]。以下是一个示例代码: ```python import gradio as gr def generate_text(prompt): input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to("cuda") outputs = model.generate(input_ids, max_length=500) return tokenizer.decode(outputs[0], skip_special_tokens=True) demo = gr.Interface( fn=generate_text, inputs="text", outputs="text", title="Qwen Chat Model", description="基于Hugging FaceQwen聊天模型" ) demo.launch() ``` #### 高级部署(如 SageMaker) 如果需要更复杂的部署方案,例如在 AWS SageMaker 上运行模型,可以参考以下代码片段[^5]。此方法适合需要扩展性和更高性能的场景。 ```python import sagemaker.huggingface import sagemaker import boto3 # 设置 SageMaker 环境 sess = sagemaker.Session() bucket = sess.default_bucket() role = sagemaker.get_execution_role() # 定义 Hugging Face 模型参数 huggingface_model = sagemaker.huggingface.HuggingFaceModel( model_data="s3://your-bucket/model.tar.gz", # 替换为实际模型路径 role=role, transformers_version="4.26", pytorch_version="1.13", py_version="py39" ) # 部署模型 predictor = huggingface_model.deploy( initial_instance_count=1, instance_type="ml.g4dn.xlarge" # 使用 GPU 实例 ) ``` #### 注意事项 - **硬件要求**:本地部署大模型时,建议使用 NVIDIA GPU,并确保驱动程序和 CUDA 工具链已正确安装[^2]。 - **资源优化**:根据模型大小调整设备映射策略(`device_map`),以充分利用多 GPU 资源[^4]。 - **安全性**:在私有化部署中,确保遵循相关法律法规,完成内容安全和算法备案流程[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值