LLMs之Grok-1:run.py文件解读—运行语言模型实现推理—即基于用户的输入文本利用grok_1语言模型来生成文本

LLMs之Grok-1:run.py文件解读---运行语言模型实现推理---即基于用户的输入文本利用grok_1语言模型来生成文本

目录

run.py文件解读---运行语言模型实现推理---即基于用户的输入文本利用grok_1语言模型来生成文本

概述

[1、加载预训练的语言模型 grok_1](#1、加载预训练的语言模型 grok_1)

1.1、定义模型的配置

2、定义并初始化推理运行器

[2.1、创建一个 InferenceRunner 对象(用于运行模型推理)](#2.1、创建一个 InferenceRunner 对象(用于运行模型推理))

[2.2、调用 inference_runner.initialize() 方法初始化推理运行器。](#2.2、调用 inference_runner.initialize() 方法初始化推理运行器。)

[2.3、调用 inference_runner.run() 方法运行模型推理并获取生成器。](#2.3、调用 inference_runner.run() 方法运行模型推理并获取生成器。)

3、模型生成

全部代码


run.py文件解读 ---运行语言模型实现推理---即基于用户的输入文本 利用grok_1语言模型来生成文本

源码地址 :grok-1/run.py at main · xai-org/grok-1 · GitHub

概述

这段代码使用了一个预训练的语言模型 grok_1_model 来生成文本。代码首先定义了模型的配置,然后创建了一个 InferenceRunner 对象来运行模型推理。最后,代码定义了一个输入字符串,并使用 sample_from_model 函数从模型中获取一个样本,将其打印出来。

1、加载预训练的语言模型 grok_1

1.1、 定义模型的配置

定义一个名为 grok_1_model 的 LanguageModelConfig 对象,该对象包含有关模型配置的详细信息,例如词汇表大小、序列长度、嵌入层初始化比例、输出和嵌入层的乘数比例等。模型的架构是一个 TransformerConfig 对象,其中包括了嵌入大小、扩展因子、键大小、头数量、层数、注意力输出乘数等参数。

2、定义并 初始化推理运行器

2.1、 创建一个 InferenceRunner 对象 ( 用于运行模型推理 )

InferenceRunner 接受一个 ModelRunner 对象作为参数,该对象包含了模型配置、批处理大小、检查点路径等信息。InferenceRunner 还需要指定一些其他参数,如名称、加载路径、分词器路径、本地和跨主机配置等。

2.2、 调用 inference_runner.initialize() 方法初始化推理运行器。

2.3、 调用 inference_runner.run() 方法运行模型推理并获取生成器。

3、模型生成

定义一个输入字符串 inp,然后使用 sample_from_model 函数从生成器中获取一个样本,并将其打印出来。

全部代码

python 复制代码
# Copyright 2024 X.AI Corp.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import logging

from model import LanguageModelConfig, TransformerConfig, QuantizedWeight8bit as QW8Bit
from runners import InferenceRunner, ModelRunner, sample_from_model


CKPT_PATH = "./checkpoints/"


def main():
    grok_1_model = LanguageModelConfig(
        vocab_size=128 * 1024,
        pad_token=0,
        eos_token=2,
        sequence_len=8192,
        embedding_init_scale=1.0,
        output_multiplier_scale=0.5773502691896257,
        embedding_multiplier_scale=78.38367176906169,
        model=TransformerConfig(
            emb_size=48 * 128,
            widening_factor=8,
            key_size=128,
            num_q_heads=48,
            num_kv_heads=8,
            num_layers=64,
            attn_output_multiplier=0.08838834764831845,
            shard_activations=True,
            # MoE.
            num_experts=8,
            num_selected_experts=2,
            # Activation sharding.
            data_axis="data",
            model_axis="model",
        ),
    )
    inference_runner = InferenceRunner(
        pad_sizes=(1024,),
        runner=ModelRunner(
            model=grok_1_model,
            bs_per_device=0.125,
            checkpoint_path=CKPT_PATH,
        ),
        name="local",
        load=CKPT_PATH,
        tokenizer_path="./tokenizer.model",
        local_mesh_config=(1, 8),
        between_hosts_config=(1, 1),
    )
    inference_runner.initialize()
    gen = inference_runner.run()

    inp = "The answer to life the universe and everything is of course"
    print(f"Output for prompt: {inp}", sample_from_model(gen, inp, max_len=100, temperature=0.01))


if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO)
    main()
相关推荐
杭州华望MBSE8 小时前
AI将载着MBSE驶向哪里?从前台工具转向工程语义与验证层
人工智能·大语言模型·mbse·sysml·国产工业软件
AI人工智能+3 天前
智能文档抽取系统通过“OCR+大模型”双引擎,实现从图像到结构化数据的精准转化,突破传统OCR仅识别文字的局限
自然语言处理·ocr·大语言模型·文档抽取
Rocky Ding*3 天前
一文读懂Kimi K3.1 Pro核心基础知识
论文阅读·人工智能·深度学习·机器学习·aigc·大语言模型·ai-native
艺杯羹4 天前
Android无障碍自动化死循环全解:从动态角标伪匹配到单向状态机防御实战
人工智能·自动化·大语言模型
孙琦Ray4 天前
比特币 Core 取消 AI 易发现漏洞的保密期
大语言模型·开源安全·比特币·漏洞披露·bitcoin core
王中阳Go5 天前
两个入口答案不一致先别调模型:6 行入口口径对账表(附脚本)
人工智能·后端·python·大语言模型·1024程序员节
爱听歌的周童鞋6 天前
MIT 6.5940 | TinyML 与高效 AI 计算 | Fall 2026 | 笔记 | Lecture 12:Transformer and LLM
transformer·大语言模型·tinyml·mit 6.5940·高效 ai 计算
EDPJ9 天前
MoE 与推测解码(Speculative Decoding)加速:为什么慢、什么时候慢、怎么让它不慢?
llm·负载均衡·大语言模型·moe·推测解码(sd)
孙琦Ray10 天前
西班牙团队开源 AI 评分平台 EvaluAI:加评分标准反而更不准,但更稳定
大语言模型·开源项目·gemini·教育科技·ai 评分·evaluai·apache-2.0
code2cat12 天前
【随笔】RAG重排怎样挑证据:先扩大候选,再把相关片段排到前面
人工智能·python·大语言模型·rag