在 Hugging Face 上使用 Phi-3

Hugging Face 是一个非常受欢迎的人工智能社区,拥有丰富的数据和开源模型资源。不同的制造商会通过 Hugging Face 发布开源的大型语言模型(LLM)和小型语言模型(SLM),例如微软、Meta、Mistral、苹果、谷歌等。

Phi3

微软 Phi-3 已经在 Hugging Face 上发布。开发者可以根据场景和业务需求下载相应的 Phi-3 模型。除了在 Hugging Face 上部署 Phi-3 Pytorch 模型外,我们还发布了量化模型,使用 GGUF 和 ONNX 格式,为用户提供选择。

1. 直接从 Hugging Face 下载 Phi-3 模型

sudo apt update
sudo apt -y install git-lfs
git lfs install
git clone https://huggingface.co/microsoft/Phi-3-mini-4k-instruct

[中国本地] 下载 Phi3 模型

注意: 首先获取 HuggingFace 令牌

注意:请将 Your-TokenYour-dir 替换为您自己的 API 令牌密钥和模型存储的本地目录。


* 安装本地源工具,创建conda虚拟环境。

> 请注意,我们已经为您安装了Miniforge3,您无需再次安装。

```bash
cd ~
[跳过此步骤] bash Miniforge3.sh -b -p "${HOME}/conda"

source "${HOME}/conda/etc/profile.d/conda.sh"

conda activate

[跳过此步骤] conda create -n hfdev python==3.10.12

conda activate hfdev

pip install -U huggingface_hub

  • 设置本地环境变量
export HF_ENDPOINT=https://hf-mirror.com
  • 在这个实验中,请将 --local-dir 设置为 /home/mgyslm/zhihu/models/, 并且您不需要下载这个模型,因为我们已经在同一位置下载完成了。
huggingface-cli download --token [Your-token] --resume-download microsoft/Phi-3-mini-4k-instruct --local-dir [Your-dir]

2. 了解 Phi-3 提示模板

在训练 Phi-3 时有一个特定的数据模板,因此在使用 Phi-3 时,发送提示(Prompt)需要通过模板来设置。在微调过程中,数据也需要根据模板进行扩展。

该模板包含三个角色,包括系统、用户和助手。


<|system|>
Your Role<|end|>
<|user|>
Your Question?<|end|>
<|assistant|>

例如:


<|system|>
Your are a python developer.<|end|>
<|user|>
Help me generate a bubble algorithm<|end|>
<|assistant|>

3. 使用Python进行Phi-3推理

Phi-3的推理是指使用Phi-3模型基于输入数据生成预测或输出的过程。Phi-3模型是一系列小型语言模型(SLMs),包括Phi-3-Mini、Phi-3-Small和Phi-3-Medium等变体,每种都针对不同的应用场景设计,并具有不同的参数大小。这些模型已经在高质量数据上进行了训练,并且针对聊天能力、对齐、鲁棒性和安全性进行了微调。它们可以在边缘和云平台上使用ONNX和TensorFlow Lite进行部署,并且是根据微软负责任的AI原则开发的。

例如,Phi-3-Mini是一个轻量级的、最先进的开放模型,拥有38亿参数,适合使用聊天格式的提示,并支持长达128K令牌的上下文长度。它是同类重量级中第一个支持如此长上下文的模型。

Phi-3模型可在Azure AI MaaS、HuggingFace、NVIDIA、Ollama、ONNX等平台上使用,适用于实时交互、自主系统和需要低延迟的应用程序。

引用Phi-3有很多方法。您可以使用不同的编程语言来引用该模型。

以下是一个Python示例。

  • 如果您的虚拟环境尚未激活,请通过输入conda activate hfdev来激活conda虚拟环境,并在其中安装accelerate库。
conda activate hfdev
pip install accelerate

  • 创建演示代码并将以下代码粘贴进去:

<YOUR_LOCAL_MODEL_PATH> 替换为您在前面的步骤中已经下载的模型的路径。


import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline

torch.random.manual_seed(0)

# set the local path of the model which is download before.
local_model_path = '<YOUR_LOCAL_MODEL_PATH>'

model = AutoModelForCausalLM.from_pretrained(
        # "microsoft/Phi-3-mini-4k-instruct",
        local_model_path,
    device_map="cuda",
    torch_dtype="auto",
    trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained("microsoft/Phi-3-mini-4k-instruct")

messages = [
    {"role": "system", "content": "Your are a python developer."},
    {"role": "user", "content": "Help me generate a bubble algorithm"},
]

pipe = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
)

generation_args = {
    "max_new_tokens": 600,
    "return_full_text": False,
    "temperature": 0.3,
    "do_sample": False,
}

output = pipe(messages, **generation_args)

print(output[0]['generated_text'])

  • 您可以看看这个结果是否与您心中预期的结果一致。

  • 如果您的虚拟环境尚未激活,请通过输入conda activate hfdev来激活conda虚拟环境,并在其中安装accelerate库。