基于Megatron-LM从0到1完成GPT2模型预训练、模型评估及推理

随着 ChatGPT 迅速爆火,引领基于Transformer架构的大模型从幕后走到台前。但 ChatGPT 的成功并不是一蹴而就,而是,经过了从早期的 GPT1 到 GPT2,之后到 GPT3 和 InstructGPT、然后到GPT3.5和ChatGPT,直到如今的多模态大模型 GPT4。

image.png

但是 GPT3 之后的一系列工作,OpenAI并没有开源其模型,因此,我们没办法去自己的剖析其背后的机理。但是,作为 GPT 系列的鼻祖之一,GPT2 却是开源的;因此,本文将使用 Megatron-LM 针对 GPT2 模型进行预训练;为了不影响文章的阅读体验,具体的脚本和代码均放置在GitHub:llm-action。

在这里插入图片描述

运行环境搭建


基础环境配置如下:

  • 操作系统: Ubuntu 18.04
  • CPUs: 单个节点具有 384GB 内存的 Intel CPU,物理CPU个数为2,每颗CPU核数为20
  • GPUs: 4 卡 A800 80GB GPUs
  • Python: 3.8.10
  • NVIDIA驱动程序版本: 525.105.17,根据不同型号选择不同的驱动程序,点击下载。
  • CUDA工具包: 12.1,点击下载

为了能够快速复现 GPT2 的整个预训练过程,本文选择基于英伟达官方提供的 Doker 镜像来构建运行环境。

首先,从英伟达官方下载对应版本的Pytorch镜像。

1  docker pull nvcr.io/nvidia/pytorch:23.04-py3

镜像下载完成之后,创建训练环境的容器。

1  docker run -dt --name nvidia_pytorch_env --restart=always --gpus all \
2  --network=host \
3  --shm-size 4G \
4  -v /home/gdong/workspace:/workspace \
5  -w /workspace \
6  nvcr.io/nvidia/pytorch:23.04-py3 \
7  /bin/bash

之后,进入容器准备代码、模型、数据等。

1  docker exec -it nvidia_pytorch_env bash

代码准备


下载 Megatron-LM 源码,然后,切换到对应的 commitid:

1  git clone https://github.com/NVIDIA/Megatron-LM.git
2  cd Megatron-LM
3  git checkout 992da75

模型权重和词表准备


下载GPT2权重:

1  wget --content-disposition https://api.ngc.nvidia.com/v2/models/nvidia/megatron_lm_345m/versions/v0.0/zip -O megatron_lm_345m_v0.0.zip

解压之后的文件格式如下所示:

1  > tree -h megatron
2  megatron
3  ├── [   8]  latest_checkpointed_iteration.txt
4  └── [4.0K]  release
5      └── [4.0K]  mp_rank_00
6          └── [677M]  model_optim_rng.pt
7
8  2 directories, 2 files
9
10 > cat megatron/latest_checkpointed_iteration.txt 
11 release

下载GPT2词表:

1  https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-vocab.json
2  https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-merges.txt

数据集准备


Megatron-LM 训练 GPT2 利用了 jcpeterson 和 eukaryote31 的公开可用的 OpenWebText 库来下载 URL。 然后,根据 openwebtext 目录中描述的过程对所有下载的内容进行过滤、清理和重复数据删除。 根据截至 2018 年 10 月 Reddit URL 对应的内容,得到了大约 37GB 的内容。

下面根据 Megatron-LM 中 openwebtext 文档准备训练数据。

首先,安装依赖库。

1  pip install ftfy langdetect numpy torch pandas nltk sentencepiece boto3 tqdm regex bs4 newspaper3k htmlmin tldextract -i https://pypi.tuna.tsinghua.edu.cn/simple  --trusted-host pypi.tuna.tsinghua.edu.cn

然后,安装LSH。

1  git clone https://github.com/mattilyra/LSH
2  cd LSH
3  git checkout a57069b
4  python setup.py install

由于,这里使用的Python版本为3.8.10,存在不兼容的问题,安装的时候会报错,按照提示进行修改即可。

修改lsh/cMinhash.cpp文件:

  • 将exc_type改为curexc_type
  • 将exc_value改为curexc_value
  • 将exc_traceback改为curexc_traceback

安装完成之后,下面从 jcpeterson 下载去重后的 URL,放置在urls目录下,由于文件太多这里仅下载一个URL文件用于演示。

image.png

1  > mkdir urls
2
3  > tree -h urls/
4  urls/
5  └── [5.3M]  RS_2011-01.bz2.deduped.txt
6
7  0 directories, 1 file

然后,删除列入黑名单的 URL。

1  # python blacklist_urls.py <path to the downloaded deduplicated URLs> <filename for clean urls. e.g. clean_urls.txt>
2  python3 blacklist_urls.py ./urls clean_urls.txt
3  # 只保存清除后的前100个URL。
4  # head -n100 clean_urls.txt >> clean_urls_100.txt

接下来,使用 openwebtext 的实用工具从清洗后的 URL 下载内容。

需要修改一下download.py里面的--sqlite_meta--save_uncompressed的默认值,分别改成FalseTrue,这样执行python3 openwebtext/download.py clean_urls.txt 之后就会生成一个scraped文件夹,每个url下载的文本就保存在data子文件夹下。

1  # ef42b51
2  git clone https://github.com/yet-another-account/openwebtext.git
3  
4  # vim openwebtext/download.py
5
6  python3 openwebtext/download.py ./Megatron-LM/tools/openwebtext/clean_urls.txt  --output_dir /workspace/code/scraped

下载完成之后,格式如下所示:

1  > tree -h /workspace/code/scraped
2  /workspace/code/scraped
3  ├── [304K]  data
4  │   ├── [ 176]  0000300-ab9ff12f7658b8764a413bf58d58bc48b866b0c163ce5c0442296dce46ff0ff8.txt
5  │	│	...
6  │   └── [ 634]  0009896-6e15400f49434b3dbf9421a8f342f80f26c1e901f78f6350d4b738f58c456bdd.txt
7  └── [296K]  meta
8      ├── [ 154]  0001000-ab50f2cd5366369108d58d6e4eb77e8c4babf56e634a33dcd880597684109fc4.json
9      │	...
10     └── [ 224]  0009896-6e15400f49434b3dbf9421a8f342f80f26c1e901f78f6350d4b738f58c456bdd.json
11
12 2 directories, 4860 files

文件内容如下:

1  # meta 子文件夹存储元数据
2  > cat /workspace/code/scraped/meta/0009896-6e15400f49434b3dbf9421a8f342f80f26c1e901f78f6350d4b738f58c456bdd.json
3  {"url": "http://minnesotaindependent.com/74302/bachmann-says-transportation-projects-shouldnt-count-as-earmarks", "word_count": 73, "elapsed": 3.2160894870758057, "scraper": "newspaper", "domain": "minnesotaindependent.com"}
4
5  # data 子文件夹存储文本数据
6  > cat /workspace/code/scraped/data/0009896-6e15400f49434b3dbf9421a8f342f80f26c1e901f78f6350d4b738f58c456bdd.txt 
7  Der eigene Bodenwischer ist der wichtigste Begleiter im täglichen Haushalt. Ob für Parkett, Fliesen oder Laminat: Qualität, Ausstattung und Preis spielen bei der Kaufentscheidung eine große Rolle.
8  ...
9  Bodenwischer für …

将data子文件夹的文本文件合并成一个json文件。

1  python3 Megatron-LM/tools/openwebtext/merge_data.py --data_path /workspace/code/scraped/data --output_file /workspace/data/merged_output.json

合并后文件格式如下:

1  > head -n6 /workspace/data/merged_output.json
2  {"text": "With every new year, it's murder for Neal Smither and his crew.\n"}
3  {"text": "\n"}
4  {"text": "Suicide, too.\n"}
5  {"text": "\n"}
6  {"text": "As owner of Crime Scene Cleaners, Smither's job is to clean up the bloody messes left behind when people kill each other or themselves - and those first few weeks after Jan. 1 are his busiest time of year.\n"}
7  {"text": "\n"}

数据清洗


执行 ftfy、英语检测并删除少于 128 个标记的文档。

1  python3 cleanup_dataset.py /workspace/data/merged_output.json /workspace/data/merged_cleand.json

清洗前后数据对比:

1  > wc -l merged_output.json 
2  78802 merged_output.json
3
4  > wc -l merged_cleand.json 
5  2456 merged_cleand.json

然后,shuffle清洗后的数据集。

1  shuf /workspace/data/merged_cleand.json -o /workspace/data/train_data.json

数据预处理


接下来,进行训练数据需要预处理。

1  python tools/preprocess_data.py \
2         --input /workspace/data/train_data.json \
3         --output-prefix /workspace/data/my-gpt2 \
4         --vocab-file /workspace/model/gpt2-vocab/gpt2-vocab.json\
5         --dataset-impl mmap \
6         --tokenizer-type GPT2BPETokenizer \
7         --merge-file /workspace/model/gpt2-vocab/gpt2-merges.txt \
8         --append-eod \
9         --workers 20 \
10        --chunk-size 25

输出文件名为 my-gpt2_text_document.bin 和 my-gpt2_text_document.idx。在 GPT2 训练时,使用不带扩展名的名称作为 --data-path

现在,所有的前期工作都已经准备好了,接下来开始模型训练。

模型训练


单卡训练

下面,修改examples/pretrain_gpt.sh脚本,配置权重文件路径(CHECKPOINT_PATH)、词表文件路径(VOCAB_FILE)merge表路径(MERGE_FILE)、数据集路径(DATA_PATH)等;

1  #!/bin/bash
2
3  # Runs the "345M" parameter model
4
5  export CUDA_DEVICE_MAX_CONNECTIONS=1
8
7  CHECKPOINT_PATH=/workspace/model/megatron-models/345m
8  VOCAB_FILE=/workspace/model/gpt2-vocab/gpt2-vocab.json
9  MERGE_FILE=/workspace/model/gpt2-vocab/gpt2-merges.txt
10 DATA_PATH=/workspace/data/my-gpt2_text_document
11 MODEL_PATH=/workspace/model/megatron-models/output
12
13 # 模型超参数
14 GPT_ARGS="
15     --num-layers 24 \
16     --hidden-size 1024 \
17     --num-attention-heads 16 \
18     --seq-length 1024 \
19     --max-position-embeddings 1024 \
20     --micro-batch-size 1 \
21     --global-batch-size 2 \
22     --lr 0.00015 \
23     --train-iters 5000 \
24     --lr-decay-iters 320000 \
25     --lr-decay-style cosine \
26     --min-lr 1.0e-5 \
27     --weight-decay 1e-2 \
28     --lr-warmup-fraction .01 \
29     --clip-grad 1.0 \
30     --fp16
31 "
32
33 # 数据集和词表路径参数
34 DATA_ARGS="
35     --data-path $DATA_PATH \
36     --vocab-file $VOCAB_FILE \
37     --merge-file $MERGE_FILE \
38     --data-impl mmap \
39     --split 700,200,100
40 "
41
42 # 模型权重输出、评估、日志相关的参数
43 OUTPUT_ARGS="
44     --log-interval 100 \
45     --save-interval 10000 \
46     --eval-interval 1000 \
47     --eval-iters 10
48 "
49
50 # 启动训练任务
51 torchrun pretrain_gpt.py \
52     $GPT_ARGS \
53     $DATA_ARGS \
54     $OUTPUT_ARGS \
55     --save $MODEL_PATH \
56     --load $CHECKPOINT_PATH

然后,运行如下脚本进行训练:

1  CUDA_VISIBLE_DEVICES=3 sh examples/pretrain_gpt.sh 

训练完成之后,模型权重输出如下所示:

1  > tree -h 345m
2  345m
3  ├── [4.0K]  iter_0005000
4  │   └── [4.0K]  mp_rank_00
5  │       └── [4.6G]  model_optim_rng.pt
6  └── [   4]  latest_checkpointed_iteration.txt
7
8  > cat 345m/latest_checkpointed_iteration.txt 
9  5000

除了单卡进行训练之外,我们还可以使用多卡进行训练。下面分别演示使用4卡数据并行、4卡张量并行、4卡流水线并行、以及多维混合并行(2卡张量并行、2卡流水线并行)训练。

数据并行训练(4DP)

下面使用4DP进行数据并行训练,运行pretrain_gpt_distributed.sh脚本进行训练。

训练完成之后,模型权重输出:

1  tree -h /workspace/model/megatron-models/345m-init-4tp
2  /workspace/model/megatron-models/345m-init-4tp
3  ├── [4.0K]  iter_0002000
4  │   ├── [4.0K]  mp_rank_00
5  │   │   └── [1.2G]  model_optim_rng.pt
6  ...
7  │   └── [4.0K]  mp_rank_03
8  │       └── [1.2G]  model_optim_rng.pt
9  └── [   4]  latest_checkpointed_iteration.txt
10
11 10 directories, 9 files
12 
13 > cat /workspace/model/megatron-models/345m-init-4tp/latest_checkpointed_iteration.txt 
14 2000

训练过程中,显存占用:

1
2  +-----------------------------------------------------------------------------+
3  | Processes:                                                                  |
4  |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
5  |        ID   ID                                                   Usage      |
6  |=============================================================================|
7  |    0   N/A  N/A   3227288      C   /usr/bin/python                  9652MiB |
8  |    1   N/A  N/A   3227289      C   /usr/bin/python                  9652MiB |
9  |    2   N/A  N/A   3227290      C   /usr/bin/python                  9652MiB |
10 |    3   N/A  N/A   3227291      C   /usr/bin/python                  9652MiB |
11 +-----------------------------------------------------------------------------+

模型并行训练(4PP)

下面使用4PP进行模型并行训练,使用pretrain_gpt_distributed_with_4pp.sh脚本进行训练。

训练完成之后,模型权重输出:

1  > tree -h /workspace/model/megatron-models/345m-init-4pp
2  /workspace/model/megatron-models/345m-init-4pp
3  ├── [4.0K]  iter_0002000
4  │   ├── [4.0K]  mp_rank_00_000
5  │   │   └── [1.7G]  model_optim_rng.pt
6  │   ├── [4.0K]  mp_rank_00_001
7  │   │   └── [1009M]  model_optim_rng.pt
8  │   ├── [4.0K]  mp_rank_00_002
9  │   │   └── [1009M]  model_optim_rng.pt
10 │   └── [4.0K]  mp_rank_00_003
11 │       └── [1.7G]  model_optim_rng.pt
12 └── [   4]  latest_checkpointed_iteration.txt
13
14 > cat /workspace/model/megatron-models/345m-init-4pp/latest_checkpointed_iteration.txt 
15 2000

训练过程中,显存占用:

1  +-----------------------------------------------------------------------------+
2  | Processes:                                                                  |
3  |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
4  |        ID   ID                                                   Usage      |
5  |=============================================================================|
6  |    0   N/A  N/A   2630871      C   /usr/bin/python                  8680MiB |
7  |    1   N/A  N/A   2630872      C   /usr/bin/python                  6408MiB |
8  |    2   N/A  N/A   2630873      C   /usr/bin/python                  5080MiB |
9  |    3   N/A  N/A   2630874      C   /usr/bin/python                  5436MiB |
10 +-----------------------------------------------------------------------------+

模型并行训练(4TP)

下面使用4TP进行模型并行训练,使用pretrain_gpt_distributed_with_4tp.sh脚本进行训练。

训练完成之后,模型权重输出:

1  tree -h /workspace/model/megatron-models/345m-init-4tp
2  /workspace/model/megatron-models/345m-init-4tp
3  ├── [4.0K]  iter_0002000
4  │   ├── [4.0K]  mp_rank_00
5  │   │   └── [1.2G]  model_optim_rng.pt
6  ...
7  │   └── [4.0K]  mp_rank_03
8  │       └── [1.2G]  model_optim_rng.pt
9  └── [   4]  latest_checkpointed_iteration.txt
10
11 > cat /workspace/model/megatron-models/345m-init-4tp/latest_checkpointed_iteration.txt 
12 2000

训练过程中,显存占用:

1  +-----------------------------------------------------------------------------+
2  | Processes:                                                                  |
3  |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
4  |        ID   ID                                                   Usage      |
5  |=============================================================================|
6  |    0   N/A  N/A   3895346      C   /usr/bin/python                  4236MiB |
7  |    1   N/A  N/A   3895347      C   /usr/bin/python                  4176MiB |
8  |    2   N/A  N/A   3895348      C   /usr/bin/python                  4168MiB |
9  |    3   N/A  N/A   3895349      C   /usr/bin/python                  4176MiB |
10 +-----------------------------------------------------------------------------+

模型并行训练(2TP+2PP)

下面使用2TP和2PP进行模型并行训练,运行pretrain_gpt_distributed_with_mp.sh脚本进行训练。

训练完成之后,模型权重输出:

1  > tree -h 345m-init-mp
2  345m-init-mp
3  ├── [4.0K]  iter_0005000
4  │   ├── [4.0K]  mp_rank_00_000
5  │   │   └── [1.3G]  model_optim_rng.pt
6  │   ├── [4.0K]  mp_rank_00_001
7  │   │   └── [1.3G]  model_optim_rng.pt
8  │   ├── [4.0K]  mp_rank_01_000
9  │   │   └── [1.3G]  model_optim_rng.pt
10 │   └── [4.0K]  mp_rank_01_001
11 │       └── [1.3G]  model_optim_rng.pt
12 └── [   4]  latest_checkpointed_iteration.txt

训练过程中,显存占用:

1  +-----------------------------------------------------------------------------+
2  | Processes:                                                                  |
3  |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
4  |        ID   ID                                                   Usage      |
5  |=============================================================================|
6  |    0   N/A  N/A   3448098      C   /usr/bin/python                  8732MiB |
7  |    1   N/A  N/A   3448099      C   /usr/bin/python                  8732MiB |
8  |    2   N/A  N/A   3448100      C   /usr/bin/python                  6828MiB |
9  |    3   N/A  N/A   3448101      C   /usr/bin/python                  7078MiB |
10 +-----------------------------------------------------------------------------+

模型权重合并


合并分布式并行训练的模型,在更少的 GPU 上使用可能会更有利。

通过以下脚本完成合并操作。 此示例读取具有 2TP 和 2PP 模型并行训练的 GPT 模型,并输出具有 1TP 和 1PP 的模型。

1  python tools/checkpoint_util.py \
2          --model-type GPT \
3          --load-dir /workspace/model/megatron-models/345m-init-mp\
4          --save-dir /workspace/model/megatron-models/345m-init-mp-out \
5          --target-tensor-parallel-size 1 \
6          --target-pipeline-parallel-size 1

模型权重合并之后,下面使用合并后的权重进行模型评估及推理。

模型评估


下面基于 LAMBADA 数据集 进行完形填空准确率(在给定前面的Token的情况下,预测最后一个Token的准确性)评估。

使用以下命令进行模型评估,执行脚本之前需预先配置模型权重、评估数据集、词表路径等。

1  sh eval_gpt2_lambada.sh 

注意:应使用 --strict-lambada 来要求整个单词匹配。

运行过程部分日志如下:

1  using world size: 1, data-parallel-size: 1, tensor-model-parallel size: 1, pipeline-model-parallel size: 1 
2  setting global batch size to 8
3  using torch.float16 for parameters ...
4  ------------------------ arguments ------------------------
5    accumulate_allreduce_grads_in_fp32 .............. False
6    ...
7    world_size ...................................... 1
8  -------------------- end of arguments ---------------------
9  setting number of micro-batches to constant 1
10 > building GPT2BPETokenizer tokenizer ...
11 > padded vocab (size: 50257) with 47 dummy tokens (new size: 50304)
12 > initializing torch distributed ...
13 > initialized tensor model parallel with size 1
14 > initialized pipeline model parallel with size 1
15 > setting random seeds to 1234 ...
16 > compiling dataset index builder ...
17 ...
18 make: Leaving directory '/workspace/code/bak/Megatron-LM/megatron/data'
19 >>> done with dataset index builder. Compilation time: 13.399 seconds
20 > compiling and loading fused kernels ...
21 >>> done with compiling and loading fused kernels. Compilation time: 1.411 seconds
22 building GPT model ...
23  > number of parameters on (tensor, pipeline) model parallel rank (0, 0): 354871296
24  loading checkpoint from /workspace/model/megatron-models/345m-init-mp-out at iteration 5000
25  checkpoint version 3.0
26   successfully loaded checkpoint from /workspace/model/megatron-models/345m-init-mp-out at iteration 5000
27 > building lambada dataset from /workspace/data/lambada_test.jsonl ...
28  > found 5153 samples.
29 > working on iteration: 0
30 ...
31 > working on iteration: 640
32 --------------------------------------------------------------------------------------------------------------------
33  validation results on LAMBADA | number correct: 0.0000E+00 | total examples: 5.1530E+03 | avg accuracy: 0.0000E+00
34 --------------------------------------------------------------------------------------------------------------------
35 done :-)
36

模型推理服务


tools/run_text_ Generation_server.py 中包含了一个简单的 REST 服务,用于生成文本。运行它,你需要指定适当的预训练检查点(checkpoint)。 还有一些可选参数:temperaturetop-ktop-p 等可以配置,详细信息请参阅 --help 或源文件。

启动推理服务之前,需预先安装依赖库:

1  pip install flask flask-restful -i https://pypi.tuna.tsinghua.edu.cn/simple  --trusted-host pypi.tuna.tsinghua.edu.cn

安装完成之后,使用examples/run_text_generation_server_345M.sh脚本启动基于GPT2模型的推理服务。

1  sh examples/run_text_generation_server_345M.sh

推理服务运行后,您可以使用 tools/text_ Generation_cli.py 来请求接口,它需要一个参数,即服务运行的主机。

1  > python tools/text_generation_cli.py localhost:5000
2  Enter prompt: hello
3  Enter number of tokens to generate: 5
4  Megatron Response: 
5  hello! Until that protagonist receive
6  Enter prompt: world 
7  Enter number of tokens to generate: 2
8  Megatron Response: 
9  worldboarding-
10 Enter prompt: 

除此之外,您还可以使用 curl 或任何其他接口测试工具直接请求接口:

1  > curl 'http://localhost:5000/api' -X 'PUT' -H 'Content-Type: application/json; charset=UTF-8'  -d '{"prompts":["Hello world"], "tokens_to_generate":1}'
2
3  {"logprobs":null,"segments":[["Hello"," world",","]],"text":["Hello world,"]}

上面是使用单卡进行模型推理,我们还可以进行多卡模型并行推理。

使用4TP进行模型推理:

1  sh examples/run_text_generation_server_345M_4_tensor_parallel.sh 

显存占用:

1  +-----------------------------------------------------------------------------+
2  | Processes:                                                                  |
3  |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
4  |        ID   ID                                                   Usage      |
5  |=============================================================================|
6  |    0   N/A  N/A   1844443      C   /usr/bin/python                   788MiB |
7  |    1   N/A  N/A   1844444      C   /usr/bin/python                   788MiB |
8  |    2   N/A  N/A   1844445      C   /usr/bin/python                   788MiB |
9  |    3   N/A  N/A   1844446      C   /usr/bin/python                   788MiB |
10 +-----------------------------------------------------------------------------+

使用2TP+2PP进行模型推理:

1  sh examples/run_text_generation_server_345M_2tp_2dp.sh 

显存占用:

1  +-----------------------------------------------------------------------------+
2  | Processes:                                                                  |
3  |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
4  |        ID   ID                                                   Usage      |
5  |=============================================================================|
6  |    0   N/A  N/A   1869409      C   /usr/bin/python                  1222MiB |
7  |    1   N/A  N/A   1869410      C   /usr/bin/python                  1222MiB |
8  |    2   N/A  N/A   1869411      C   /usr/bin/python                  1222MiB |
9  |    3   N/A  N/A   1869412      C   /usr/bin/python                  1222MiB |
10 +-----------------------------------------------------------------------------+

结语


本文基于英伟达开源的 Megatron-LM 框架完成了GPT2 模型的预训练、模型评估及推理的整个过程。同时,也讲述了准备 GPT2 模型训练的数据集的整个预处理过程。

如果觉得我的文章能够能够给您带来帮助,期待您的点赞收藏加关注~~


最后如果您也对AI大模型感兴趣想学习却苦于没有方向👀
小编给自己收藏整理好的学习资料分享出来给大家💖
👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码关注免费领取【保证100%免费】🆓

请添加图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉如何学习AI大模型?👈

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
在这里插入图片描述

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
在这里插入图片描述

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
在这里插入图片描述

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
在这里插入图片描述

四、AI大模型商业化落地方案

在这里插入图片描述

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1550541.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

一钉多用:自攻螺钉在家居与工业领域的广泛应用

自攻螺钉的结构要素有哪些重要特点&#xff1f; 自攻螺钉适用于非金属或软金属&#xff0c;不需要配合预先开好的孔和攻牙。自攻螺钉的尖头设计使其能够“自我攻入”材料中&#xff1b;而普通螺丝通常是平头&#xff0c;规格一致。自攻螺钉的关键在于&#xff0c;打孔时不需要进…

【JavaEE初阶】网络原理

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 ⽹络互连 IP地址 端口号 协议 协议分层 优势 TCP/IP 五层网络模型 数据在网络通信中的整体流程 封装和分用 封装 分用 ⽹络互连 随着时代的发展&#xff0c;越来越需…

Angular基础学习(入门 --> 入坑)

目录 一、Angular 环境搭建 二、创建Angular新项目 三、数据绑定 四、ngFor循环、ngIf、ngSwitch、[ngClass]、[ngStyle]、管道、事件、双向数据绑定--MVVM 五、DOM 操作 &#xff08;ViewChild&#xff09; 六、组件通讯 七、生命周期 八、Rxjs 异步数据流 九、Http …

51单片机的光照强度检测【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块光照传感器按键蜂鸣器LED等模块构成。适用于光照强度检测、光照强度测量报警等相似项目。 可实现功能: 1、LCD1602实时显示光照强度信息 2、光照强度传感器&#xff08;电位器模拟&#xff09;采集光照信息 3、可…

X86架构(九)——保护模式的进入

全局描述符表 全局描述符表(Global Descriptor Table,GDT)是保护模式下非常重要的一个数据结构。 在保护模式下&#xff0c;对内存的访问仍然使用段地址和偏移地址&#xff0c;在每个段能够访问之前&#xff0c;必须先行设置好 GDT 的地址&#xff0c;并加载全局描述符表寄存…

emp.dll丢失怎么解决,快来试试这个几个解决方法

在日常使用电脑玩游戏的过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中最常见的就是“emp.dll丢失”。那么&#xff0c;emp.dll到底是什么&#xff1f;它为什么会丢失&#xff1f;丢失后会对我们的电脑产生什么影响&#xff1f;本文将为您详细解析emp.dll的概念…

[BUUCTF从零单排] Web方向 03.Web入门篇之sql注入-1(手工注入详解)

这是作者新开的一个专栏《BUUCTF从零单排》&#xff0c;旨在从零学习CTF知识&#xff0c;方便更多初学者了解各种类型的安全题目&#xff0c;后续分享一定程度会对不同类型的题目进行总结&#xff0c;并结合CTF书籍和真实案例实践&#xff0c;希望对您有所帮助。当然&#xff0…

打造高业绩朋友圈:策略与实践

在数字化时代&#xff0c;朋友圈不仅是个人生活的展示窗口&#xff0c;更是商业变现的有力平台。许多人通过精心经营朋友圈&#xff0c;实现了财富的增长&#xff0c;甚至达到了年入百万的惊人业绩。朋友圈已成为普通人实现逆袭的重要战场。 要打造一个业绩过万的朋友圈&#…

关于武汉芯景科技有限公司的IIC电平转换芯片XJ9509开发指南(兼容PCa9509)

一、芯片引脚介绍 1.芯片引脚 2.引脚描述 二、系统结构图 三、功能描述 1.VCCA1.35V,VCCB5V,A1输入&#xff0c;B1输出 2.VCCA1.35V,VCCB5V,B1输入&#xff0c;A1输出 3.VCCA1.35V,VCCB5V,A2输入&#xff0c;B2输出 4.VCCA1.35V,VCCB5V,B2输入&#xff0c;A2输出

升级 Windows 后如何恢复丢失的文件

升级到 Windows 11 后可以恢复丢失的文件&#xff01;阅读帖子直到最后&#xff0c;了解如何做到这一点。 为了获得安全更新并使用最新的操作系统&#xff0c;人们会升级到最新版本的 Windows。然而&#xff0c;在这样做的过程中&#xff0c;许多人丢失了他们的重要文件&#…

基于SpringBoot+Vue+MySQL的体育商城系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着互联网的飞速发展&#xff0c;电子商务已成为人们日常生活中不可或缺的一部分。体育用品市场作为其中的一个重要分支&#xff0c;也逐渐向线上转移。基于SpringBootVueMySQL的体育商城系统应运而生&#xff0c;旨在通过构建…

优秀的拆分C++

题目&#xff1a; 样例解释&#xff1a; 样例1解释 6422221 是一个优秀的拆分。注意&#xff0c;6222 不是一个优秀的拆分&#xff0c;因为拆分成的 3 个数不满足每个数互不相同。 思路&#xff1a; 题目大致意思是说给定一个正整数NN&#xff0c;让你用二进制表示&#xff08;…

PDCA优化任务流程

这里写目录标题 一、背景二、PDCA重要性与必要性概念PDCA循环的重要性 三、PDCA分析这次任务的执行任务描述分析原因&#xff1a;结合PDCA分析&#xff1a;提高办法&#xff1a; 四、总结 一、背景 汇报任务完成情况&#xff0c;未提交实际成果。 本次总结旨在通过PDCA循环的视…

鸿蒙开发(NEXT/API 12)【硬件(振动开发1)】振动

通过最大化开放马达器件能力&#xff0c;振动器模块服务拓展了原生马达服务&#xff0c;实现了振动与交互融合设计&#xff0c;从而打造出细腻精致的一体化振动体验和差异化体验&#xff0c;提升用户交互效率、易用性以及用户体验&#xff0c;并增强品牌竞争力。 运作机制 Vi…

学习docker第二弹------基本命令[帮助启动类命令、镜像命令、容器命令]

docker目录 前言基本命令帮助启动类命令停止docker服务查看docker状态启动docker重启docker开机启动docker查看概要信息查看总体帮助文档查看命令帮助文档 镜像命令查看所有的镜像 -a查看镜像ID -q在仓库里面查找redis拉取镜像查看容器/镜像/数据卷所占内存删除一个镜像删除多个…

机器学习:opencv--背景建模

目录 一、背景建模是什么&#xff1f; 二、背景建模的目的 三、背景建模的方法及原理 四、代码实现 1.创建卷积核 2.创建混合高斯模型 3.处理图像 4.绘制人形轮廓 5.条件退出 一、背景建模是什么&#xff1f; 指在计算机视觉中&#xff0c;从视频序列中提取出静态背景…

Anaconda虚拟环境默认路径在C盘怎么更改

笔者已经新建好了虚拟环境并且安装了对应库&#xff0c;输入conda env list查询发现虚拟环境竟然安装到了C盘(&#xff61;•́︿•̀&#xff61;)&#xff0c;为避免下一次创建虚拟环境出错&#xff0c;笔者现在修改默认路径置D盘&#xff08;软件安装盘&#xff09; 参考两…

ROS学习笔记(四):使用 `ros2 run usb_cam usb_cam_node_exe` 启动 USB 摄像头

文章目录 前言1 安装 usb_cam 包2 启动 USB 摄像头3 订阅相机发布的节点信息并进行可视化3.1 使用 rqt_image_view3.2 使用 image_view3.3 使用 rviz 4 常见问题与解决方案4.1 摄像头未被识别4.2 相机显示异常4.3 如何指定不同的相机4.4 摄像头参数调整 5. 调试信息 5. 结论 前…

pyboard405意外故障,micropython OLED例程无法运行,折腾了大半天。

thonny报告&#xff1a; Traceback (most recent call last): File "<stdin>", line 3, in <module> RuntimeError: name too mode # main.py -- put your code here! from machine import I2C,Pin #从machine模块导入I2C、Pin子模块 from ss…

SpringBoot项目请求不中断动态更新代码

在开发中&#xff0c;有时候不停机动态更新代码热部署是一项至关重要的功能&#xff0c;它可以在请求不中断的情况下下更新代码。这种方式不仅提高了开发效率&#xff0c;还能加速测试和调试过程。本文将详细介绍如何在 Spring Boot 项目在Linux系统中实现热部署&#xff0c;特…