本文将详细介绍如何在 CPU 上运行 LLama – 3.1 8B Instruct 量化模型,包括模型的基本信息、运行前的准备工作、具体的运行步骤以及模型配置参数的深入理解,旨在为人工智能爱好者、研究人员和开发者提供全面且实用的指导。

一、LLama – 3.1 8B Instruct 模型概述
(一)模型背景
LLama 是由 Meta 开发的开源大型语言模型系列,而 LLama – 3.1 8B Instruct 是其先进的 LLama 3 家族中的一员。它专为优化文本生成和基于对话的应用而设计,拥有 80 亿个参数,提供了预训练和指令微调两个版本。
(二)模型特点
-
参数规模与优化
- 80 亿参数的配置使其在效率和性能之间达到了较好的平衡。这个参数数量既能保证模型具备一定的语言理解和生成能力,又能在资源有限的情况下(如 CPU 运行时)相对高效地工作。
-
长上下文支持
- 支持长达 128k 个词元(tokens)的上下文长度。这意味着模型能够处理和生成更长的文本序列,包括输入和输出的组合。例如,在处理长篇文章的摘要任务或者多轮对话场景中,长上下文支持能够让模型更好地理解前文信息,从而生成更连贯、准确的回复。
-
架构特性
- 基于变压器(Transformer)的自回归架构构建,并通过人类反馈强化学习(RLHF)进行微调,使其与人类偏好更好地对齐。在实际应用中,这种架构使得模型能够根据输入文本逐步生成输出,并且在生成过程中考虑到人类的期望和偏好,生成更符合用户需求的文本。
- 采用分组查询注意力(GQA)机制,提高了推理过程中的可扩展性和效率。在处理大规模文本数据时,GQA 能够减少计算资源的消耗,加快模型的推理速度,从而在 CPU 上也能相对快速地生成文本。
-
训练数据
- 模型在超过 15 万亿个词元的公开数据上进行训练,主要聚焦于英语文本。丰富的训练数据为模型提供了广泛的语言知识和语义理解能力,使其能够处理各种类型的自然语言任务,如问答、文本总结、指令遵循等。
-
输出能力
- 不仅能够生成自然语言文本,还能生成代码。这使得它在编程辅助、代码解释等方面具有潜在的应用价值,为开发者提供了一种强大的工具。
-
模型变体
- 提供预训练和指令微调两种模型变体,以满足不同的使用场景。预训练模型可以用于进一步的自定义训练或特定领域的适应,而指令微调模型则直接针对指令遵循任务进行优化,能够更快地应用于实际的对话系统、问答平台等应用中。
(三)与其他 LLMs 的比较
与其他大型语言模型相比,LLama – 3.1 8B Instruct 在参数规模上处于中等水平,但它通过优化架构和训练方法,在效率和性能方面表现出色。其长上下文支持和对指令的良好理解能力使其在处理复杂对话和长文本任务时具有一定优势。同时,开源的特性也为开发者提供了更多的定制化和探索空间。
三、在 CPU 上运行 LLama – 3.1 8B Instruct 量化模型的准备工作
(一)安装所需软件包
-
huggingface_hub[cli]
- 首先,需要安装
huggingface_hub[cli]。可以通过在命令行中运行!pip install -U "huggingface_hub[cli]"来完成安装。这个软件包提供了与 Hugging Face 模型仓库交互的命令行工具,方便我们下载模型文件等操作。
- 首先,需要安装
-
llama – cpp – python
- 接着安装
llama - cpp - python,执行!pip install llama - cpp - python命令。这是一个用于在 Python 中加载和运行 LLama 模型的重要库,它提供了与 LLama 模型进行交互的接口,使得我们能够在 Python 环境下利用 LLama – 3.1 8B Instruct 模型进行文本生成等任务。
- 接着安装
(二)下载模型
-
选择合适的量化模型
- 根据 CPU 架构(如 ARM 或 AMD)从 Hugging Face 仓库下载 LLama – 3.1 8B 的 GGUF 格式量化模型。例如,如果系统 CPU 架构是
AMD64,可以选择如Meta - Llama - 3.1–8B - Instruct - IQ4_XS.gguf这样的模型(具体模型选择可根据实际情况和需求确定)。
- 根据 CPU 架构(如 ARM 或 AMD)从 Hugging Face 仓库下载 LLama – 3.1 8B 的 GGUF 格式量化模型。例如,如果系统 CPU 架构是
-
使用 huggingface – cli 下载
- 假设模型名为
Meta - Llama - 3.1–8B - Instruct - IQ4_XS.gguf,在命令行中运行!huggingface - cli download bartowski/Meta - Llama - 3.1–8B - Instruct - GGUF — include “Meta - Llama - 3.1–8B - Instruct - IQ4_XS.gguf” — local - dir./来将模型下载到本地目录。确保下载过程顺利完成,并且模型文件完整无缺,这是后续成功运行模型的关键前提。
- 假设模型名为
四、在 CPU 上运行 LLama – 3.1 8B Instruct 量化模型的步骤
安装所需的软件包
!pip install -U "huggingface_hub[cli]"
!pip install llama-cpp-python
下载 LLM
!huggingface-cli download bartowski/Meta-Llama-3.1–8B-Instruct-GGUF — include “Meta-Llama-3.1–8B-Instruct-IQ4_XS.gguf” — local-dir ./
使用 llamaCapp 加载 LLM
from llama_cpp import Llama
llm = Llama(
model_path="/content/Meta-Llama-3.1-8B-Instruct-IQ4_XS.gguf",
n_ctx=512,
n_batch=126,
)pyth
模型推理
def generate_text(
prompt,
max_tokens=256,
temperature=0.1,
top_p=0.5,
echo=False,
stop=["#"],
):
output = llm(
prompt,
max_tokens=max_tokens,
temperature=temperature,
top_p=top_p,
echo=echo,
stop=stop,
)
output_text = output["choices"][0]["text"].strip()
return output_text
def generate_prompt_from_template(input):
chat_prompt_template = f"""You are a helpful chatbot.user
{input}assistant
"""
return chat_prompt_template
prompt = generate_prompt_from_template(
"how are you doing today?"
)
generate_text(
prompt,
max_tokens=128,
)
五、模型配置参数详解
(一)max_tokens
-
作用
-
max_tokens参数指定了模型在生成响应时可以生成的最大词元数量。词元可以是单词、标点符号或其他文本单元。通过设置这个参数,我们可以控制模型输出的长度,避免生成过长或过短的文本。
-
-
示例
- 例如,当
max_tokens = 128时,模型会在生成文本时,最多生成 128 个词元。如果输入提示是 “请简述一下人工智能的发展历程”,模型将在生成回答时,将输出的词元数量限制在 128 个以内,从而生成一个相对简洁的关于人工智能发展历程的简述。如果设置max_tokens过大,可能会导致生成文本过长,消耗过多的计算资源和时间;而设置过小可能会使生成的回答不完整,无法充分表达模型的理解。
- 例如,当
(二)temperature
-
作用
-
temperature参数控制模型生成响应的随机性或创造性。它影响模型在选择下一个词元时的概率分布。较低的值(如接近 0.1)会使模型更倾向于选择概率较高的词元,生成的文本更加确定性和保守,通常会生成常见、高可能性的完成内容。较高的值(如接近 0.8)则会引入更多的随机性,模型会更频繁地选择概率较低但更具创造性的词元,从而生成更多样化的文本。
-
-
示例
- 当
temperature = 0.1时,如果输入提示是 “苹果是什么颜色的”,模型可能会生成比较常见的回答,如 “苹果通常是红色、绿色或黄色的”。而当temperature = 0.8时,模型可能会生成更具创造性的回答,如 “苹果在不同的光线下会呈现出五彩斑斓的颜色,从鲜艳的红到淡淡的绿,仿佛是大自然的调色盘”。但需要注意的是,过高的temperature可能会导致生成的文本在语法或逻辑上出现一些不太准确的情况,需要根据具体任务需求进行调整。
- 当
(三)top_p(Nucleus Sampling)
-
作用
-
top_p参数用于确定模型从哪个概率分布中进行采样。模型会考虑累积概率等于top_p的最小词元子集。例如,当top_p = 0.5时,模型会从概率最高的 50% 的词元中选择下一个词元,这有助于模型在生成文本时聚焦于更相关的词元,减少生成不太可能或不相关的词元的可能性,从而提高生成文本的质量和连贯性。
-
-
示例
- 假设模型在生成关于 “描述一下美丽的风景” 的文本时,有一系列可能的词元及其概率。当
top_p = 0.5时,模型会筛选出概率最高的 50% 的词元,然后从这个子集中选择下一个词元。这样可以避免模型选择一些概率极低但可能会破坏文本连贯性的词元,例如一些生僻的词汇或不相关的短语,从而生成更流畅、合理的关于美丽风景的描述。
- 假设模型在生成关于 “描述一下美丽的风景” 的文本时,有一系列可能的词元及其概率。当
(四)echo
-
作用
-
echo参数决定是否在输出中包含输入提示文本。当echo = True时,输出将包含原始提示文本,然后是模型生成的文本。这在一些情况下有助于查看完整的交互过程,特别是在调试或需要明确输入与输出关系的场景中。当echo = False时,输出仅为模型生成的文本,更加简洁,适用于直接获取模型的回答。
-
-
示例
- 当
echo = True且输入提示为 “谁是世界上最高的山峰?” 时,输出可能是 “谁是世界上最高的山峰?珠穆朗玛峰是世界上最高的山峰。” 而当echo = False时,输出则为 “珠穆朗玛峰是世界上最高的山峰。”
- 当
(五)stop
-
作用
-
stop参数定义了一个或多个停止序列,用于指示模型停止文本生成。当模型在生成文本过程中遇到这些停止序列中的任何一个时,它将立即停止生成。这对于控制生成文本的长度、格式或根据特定的结束条件截断文本非常有用。
-
-
示例
- 例如,如果
stop=["#"],当模型生成的文本中出现 “#” 时,它将停止生成。假设我们正在构建一个问答系统,希望模型在回答完问题后停止,我们可以将问题的结束标记设置为 “#”,这样模型在生成回答时,一旦生成了包含 “#” 的文本,就会停止,确保回答的完整性和简洁性。
- 例如,如果
通过本文的详细介绍,我们深入了解了 LLama – 3.1 8B Instruct 模型的特点,以及如何在 CPU 上成功运行其量化模型。从安装所需软件包、下载合适的模型,到加载模型并进行推理,再到对模型配置参数的深入理解和调整,每个步骤都对实现有效的文本生成至关重要。
在实际应用中,开发者可以根据具体的任务需求,如聊天机器人、文本摘要、问答系统等,灵活调整模型配置参数,以获得最佳的性能和生成效果。同时,随着技术的不断发展,未来可能会有更多的优化方法和工具出现,进一步提高在 CPU 上运行大型语言模型的效率和质量。希望本文能够为广大人工智能爱好者和开发者在利用 LLama – 3.1 8B Instruct 模型进行创新和应用开发方面提供有力的支持,推动人工智能技术在更多领域的广泛应用。
文章来源于互联网:如何在CPU 上运行 LLama – 3.1 8B Instruct 量化模型
相关推荐: 大模型使用llama.cpp转换gguf格式并量化 | 新手炼丹记录(2)
系列回顾 llama factory LoRA微调qwen大模型 | 新手炼丹记录(1)-CSDN博客 大模型使用llama.cpp转换gguf格式并量化 | 新手炼丹记录(2)-CSDN博客 ollama本地部…
5bei.cn大模型教程网










