作者: 英特尔边缘计算创新大使 杨雪锋

1. OpenVINO Notebooks简介

OpenVINO Notebooks是Jupyter Notebook形式的OpenVINO范例程序大集合,方便开发者快速学习并掌握OpenVINO推理程序,并通过Copy&Paste方式将范例中的关键程序应用到自己的AI软件中去。

GitHub: https://github.com/openvinotoolkit/openvino_notebooks

2. 运行AI大模型的挑战

OpenVINO Notebooks提供了非常丰富的AI大模型范例程序,例如:Dolly2、Stable Diffusion、LLama2、ChatGLM2等等,方便广大开发者学习并应用AI大模型。

但运行AI大模型范例程序时,由于众所周知的原因,通常会遇到因无法从HuggingFace下载模型,导致范例程序无法运行的情况。

以240-dolly-2-instruction-following.ipynb为例,运行“Download and Convert Model”代码时会收到报错信息,如下图所示:

3. 解决AI大模型下载问题

3.1 解决方案一:命令行模式

从https://hf-mirror.com/用命令行手动下载。

第一步,安装下载工具:

pip install -U huggingface_hub hf_transfer

第二步,设置环境变量

在Linux中,执行:

export HF_HUB_ENABLE_HF_TRANSFER=1export HF_ENDPOINT=https://hf-mirror.com

在Windows中,执行:

SET HF_HUB_ENABLE_HF_TRANSFER=1SET HF_ENDPOINT=https://hf-mirror.com

第三步:运行下载命令,下载模型到本地

huggingface-cli download --resume-download databricks/dolly-v2-3b --local-dir dolly-v2-3b

3.2 解决方案二:命令行模式

在模型页面:https://hf-mirror.com/databricks/dolly-v2-3b/tree/main,右键菜单启动:“多选下载模式”,如下图所示。

然后选择所有要下载的文件,最后按“Enter”启动下载。

实际测试,迅雷下载的方式,速度最快,平均在6MB/s左右

4. 从本地加载AI大模型模型

将AI大模型下载到本地后,在,把model_id改为model_local_path, 让程序从本地加载AI大模型,例如:

model_id = "databricks/dolly-v2-3b"model_local_path = "D:/dolly-v2-3b"tokenizer = AutoTokenizer.from_pretrained(model_local_path,local_file_only=True)ov_model = OVModelForCausalLM.from_pretrained(model_local_path, device=current_device, export=True, ov_config=ov_config, load_in_8bit=False,local_file_only=True)

在240-dolly-2-instruction-following.ipynb中“Download and Convert Model”代码块更改如下所示:

from pathlib import Pathfrom transformers import AutoTokenizerfrom optimum.intel.openvino import OVModelForCausalLMmodel_id = "databricks/dolly-v2-3b"model_local_path = "D:/dolly-v2-3b"model_path = Path("dolly-v2-3b")tokenizer = AutoTokenizer.from_pretrained(model_local_path,local_file_only=True)current_device = device.valueov_config = {'PERFORMANCE_HINT': 'LATENCY', 'NUM_STREAMS': '1', "CACHE_DIR": ""}if model_path.exists():ov_model = OVModelForCausalLM.from_pretrained(model_path, device=current_device, ov_config=ov_config)else:ov_model = OVModelForCausalLM.from_pretrained(model_local_path, device=current_device, export=True, ov_config=ov_config, load_in_8bit=False,local_file_only=True)ov_model.half()ov_model.save_pretrained(model_path)

dolly-2-instruction-following.ipynb从本地加载模型的运行效果,如下图所示:

5. 总结

在遇到AI大模型无法下载时,可以选择用命令行的方式,或者下载器的方式,手动从HuggingFace镜像网站下载,然后修改加载模型的参数,从本地加载模型,实现OpenVINO Notebooks的范例代码顺利运行。