当前位置:   article > 正文

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

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

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

目录

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

概述

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

1.1、定义模型的配置

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

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

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

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 函数从生成器中获取一个样本,并将其打印出来。

全部代码

  1. # Copyright 2024 X.AI Corp.
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. import logging
  15. from model import LanguageModelConfig, TransformerConfig, QuantizedWeight8bit as QW8Bit
  16. from runners import InferenceRunner, ModelRunner, sample_from_model
  17. CKPT_PATH = "./checkpoints/"
  18. def main():
  19. grok_1_model = LanguageModelConfig(
  20. vocab_size=128 * 1024,
  21. pad_token=0,
  22. eos_token=2,
  23. sequence_len=8192,
  24. embedding_init_scale=1.0,
  25. output_multiplier_scale=0.5773502691896257,
  26. embedding_multiplier_scale=78.38367176906169,
  27. model=TransformerConfig(
  28. emb_size=48 * 128,
  29. widening_factor=8,
  30. key_size=128,
  31. num_q_heads=48,
  32. num_kv_heads=8,
  33. num_layers=64,
  34. attn_output_multiplier=0.08838834764831845,
  35. shard_activations=True,
  36. # MoE.
  37. num_experts=8,
  38. num_selected_experts=2,
  39. # Activation sharding.
  40. data_axis="data",
  41. model_axis="model",
  42. ),
  43. )
  44. inference_runner = InferenceRunner(
  45. pad_sizes=(1024,),
  46. runner=ModelRunner(
  47. model=grok_1_model,
  48. bs_per_device=0.125,
  49. checkpoint_path=CKPT_PATH,
  50. ),
  51. name="local",
  52. load=CKPT_PATH,
  53. tokenizer_path="./tokenizer.model",
  54. local_mesh_config=(1, 8),
  55. between_hosts_config=(1, 1),
  56. )
  57. inference_runner.initialize()
  58. gen = inference_runner.run()
  59. inp = "The answer to life the universe and everything is of course"
  60. print(f"Output for prompt: {inp}", sample_from_model(gen, inp, max_len=100, temperature=0.01))
  61. if __name__ == "__main__":
  62. logging.basicConfig(level=logging.INFO)
  63. main()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/332018
推荐阅读
相关标签
  

闽ICP备14008679号