HuggingFace 模型离线使用最佳方法!

以:Helsinki-NLP/opus-mt-en-zh (translation)模型为例:

如图,假设我们的运行环境基于python,那么我们通常只需要以下文件:

"config.json",
"pytorch_model.bin",
"tokenizer_config.json",
"vocab.json",
"source.spm",
"target.spm" 

其余文件如:rust,我们并不需要下载, 不使用tesorflow ,tf_model.h5也不需下载/

huggingface 官方提供以下几种下载方式:

git lfs install

git clone https://huggingface.co/Helsinki-NLP/opus-mt-en-zh

# If you want to clone without large files - just their pointers
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/Helsinki-NLP/opus-mt-en-zh

有完全克隆库,也有只克隆指针文件,但都无法根据我们的语言需求指定下载我们需要的部分文件:

所以本文推荐使用以下代码进行模型下载:

import requests
import os

def download_file(url, dest_folder, file_name):
    """
    下载文件并保存到指定的文件夹中。
    """
    response = requests.get(url, allow_redirects=True)
    if response.status_code == 200:
        with open(os.path.join(dest_folder, file_name), 'wb') as file:
            file.write(response.content)
    else:
        print(f"Failed to download {file_name}. Status code: {response.status_code}")

def download_model_files(model_name):
    """
    根据模型名称下载模型文件。
    """
    # 文件列表
    files_to_download = [
        "config.json",
        "pytorch_model.bin",
        "tokenizer_config.json",
        "vocab.json",
        "source.spm",
        "target.spm"  # 如果模型不使用SentencePiece,这两个文件可能不需要
    ]

    # 创建模型文件夹
    model_folder = model_name.split('/')[-1]  # 从模型名称中获取文件夹名称
    if not os.path.exists(model_folder):
        os.makedirs(model_folder)

    # 构建下载链接并下载文件
    base_url = f"https://huggingface.co/{model_name}/resolve/main/"
    for file_name in files_to_download:
        download_url = base_url + file_name
        print(f"Downloading {file_name}...")
        download_file(download_url, model_folder, file_name)

# 示例使用
model_name = "Helsinki-NLP/opus-mt-zh-en"
download_model_files(model_name)

如果需要增添模型文件,可在文件列表进行修改。

同时:当我们使用:

pipeline 本地运行模型时,虽然会下载python_model, 但是仍需要联网访问config.json不能实现离线运行,所以,当使用本文上述下载代码完成模型的下载后:

运行以下案例代码:

from transformers import pipeline, AutoTokenizer
import os

os.environ['TRANSFORMERS_OFFLINE']="1"
# 示例文本列表
texts_to_translate = [
    "你好",
    "你好啊",
    # 添加更多文本以确保总token数超过400
]

# 指定模型的本地路径
model_name = "./opus-mt-zh-en"  # 请替换为实际路径
# 创建翻译管道,指定本地模型路径
pipe = pipeline("translation", model=model_name)
# 获取tokenizer,指定本地模型路径
tokenizer = AutoTokenizer.from_pretrained(model_name)

result = pipe(texts_to_translate)
print(result)

建议保留:

os.environ['TRANSFORMERS_OFFLINE']="1",放弃向huggingface联网访问。

结果如下:

2024-03-29 15:57:52.211565: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
2024-03-29 15:57:53.251227: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
[{'translation_text': 'Hello.'}, {'translation_text': 'Hello.'}]

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Hugging Face是一个自然语言处理(NLP)模型和工具库的开源社区。Hugging Face提供了许多预训练的NLP模型,可以用于各种任务,如文本分类、命名实体识别、机器翻译等。离线模型是指将这些预训练模型下载到本地,以便在没有网络连接的情况下使用。 要使用Hugging Face离线模型,可以按照以下步骤进行操作: 1. 安装transformers库:首先,确保已经安装了Hugging Facetransformers库。可以使用pip命令进行安装:`pip install transformers` 2. 下载离线模型:在Hugging Face模型库(https://huggingface.co/models)中选择一个适合你任务的模型,并点击进入该模型的页面。在页面上方有一个"Model card"选项卡,点击进入后可以找到该模型的下载链接。将模型文件下载到本地。 3. 加载离线模型使用transformers库中的`AutoModel`和`AutoTokenizer`类来加载离线模型和对应的分词器。示例代码如下: ```python from transformers import AutoModel, AutoTokenizer # 指定离线模型文件路径 model_path = "path/to/model" tokenizer_path = "path/to/tokenizer" # 加载离线模型和分词器 model = AutoModel.from_pretrained(model_path) tokenizer = AutoTokenizer.from_pretrained(tokenizer_path) ``` 4. 使用离线模型:一旦离线模型和分词器加载完成,就可以使用它们进行文本处理和预测。具体的使用方法取决于你的任务和模型类型,可以参考Hugging Face的文档和示例代码。 注意:离线模型使用需要保证模型文件和分词器文件的路径正确,并且与加载时指定的路径一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CBIhalsen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值