大模型预训练代码实战教程

技术干货 | 腾讯云NLP大模型预训练最佳实践 作者:jennygong 腾讯云自然语言处理(Natural Language Process,NLP)深度整合了腾讯内部顶级的 NLP 技术,依托千亿级中文语料累积,提供16项智能文本处理能力,包括智能分词、实体识别、文本纠错、情感分析、文本分类、词向量、关键词提取、自动摘要、智能闲聊、百科知识图谱查询等。 腾讯云TI平台团队旨在通过“一套框架”+“三套最佳实践”,更好的服务外部有NLP预训练需求的客户。 TI-Deepspeed介绍 根据当前人工智能的趋势,越大的自然语言模型可以提供越好的准确性 阅读详情

本文使用一个简单的数据集,展示大模型预训练与有监督微调过程。无论是大模型的预训练还是有监督微调,其损失值的计算过程都是与下一个要预测的词计算损失。

预训练损失值的计算,即从第一个字开始每个字都与下一个字计算损失;

有监督微调与预训练唯一不同的点,便是不对指令与用户的输入文本计算损失,实际操作就是把用户输入文本在训练过程中遮罩掉,把对应的 label 的值设置为-100。这是因为不希望大模型学会,如何生成的用户的问题。

当前文章介绍预训练,下篇文章介绍有监督微调

本文不使用 llamafactory 等,大模型微调工具,上述工具把大模型微调的过程都封装到底层了。只使用 transformers库的AutoTrain实现大模型的微调。

开源地址:

https://github.com/JieShenAI/csdn/tree/main/25/02/pre_train

原始数据集

将使用下述5条数据微调大模型,对比一下,预训练与有监督微调的区别。

[
  {
    "instruct": "请你给哪吒写一首诗:",
    "input": "哪吒降世,意气飞扬。\n逆天改命,破障冲霄。",
    "label": "红绫缠腕,风火踏浪。\n不屈不悔,笑傲苍茫。"
  },
  {
    "instruct": "请你给敖丙写一首诗:",
    "input": "碧海生龙子,云中舞雪霜。",
    "label": "恩仇难两忘,何处是家乡?"
  },
  {
    "instruct": "请你给殷夫人写一首诗:",
    "input": "十月怀胎盼子生,柔心铁骨两相承。",
    "label": "甘将慈爱护天地,不惧风雷不惧征。"
  },
  {
    "instruct": "请你给太乙真人写一首诗:",
    "input": "仙风道骨,骑兽遨游。",
    "label": "炉中炼术,指点神童。"
  },
  {
    "instruct": "请你给申公豹写一首诗:",
    "input": "阴谋藏心,步步为营。\n狂傲不羁,志向高冥。",
    "label": "欲翻天命,终难遂行。\n困局自招,悔恨难平。"
  }
]

下述是标准的有监督微调的数据格式,使用 apply_chat_template 方法,告知模型哪些是系统提示词、用户问题、模型的回答。

d = {
    "instruct": "请你给哪吒写一首诗:",
    "input": "哪吒降世,意气飞扬。\n逆天改命,破障冲霄。",
    "label": "红绫缠腕,风火踏浪。\n不屈不悔,笑傲苍茫。",
}
messages = [
    {
        "role": "system",
        "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant.",
    },
    {
        "role": "user",
        "content": d["instruct"] + d["input"],
    },
    {
        "role": "assistant",
        "content": d["label"],
    },
]
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    # add_generation_prompt=True
)
print(text)

输出:

<|im_start|>system
You are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>
<|im_start|>user
请你给哪吒写一首诗:哪吒降世,意气飞扬。
逆天改命,破障冲霄。<|im_end|>
<|im_start|>assistant
红绫缠腕,风火踏浪。
不屈不悔,笑傲苍茫。<|im_end|>

上述是数据 template的构造,每个大模型的template不一样,但很多大模型微调工具(llamafactory等)都会自动构造template,无需太担心。

本文是大模型预训练与有监督微调的手搓简化版本,数据构造不使用template,设置预训练和有监督微调的输入文本一样,都是把 instruct + input + label 拼接起来,在结尾添加一个结束符号。

instruct + input + label + tokenizer.eos_token

在结尾需要添加 tokenizer.eos_token 停止符号,这是为了让大模型学会停止文本生成。不然在大模型推理的时候,大模型就会一直往后生成文本,直到达到模型最大的生成的长度才会停止。

预训练代码实战

from typing import List, Dict, Sequence
import torch
import transformers
from transformers import TrainingArguments, Trainer
from torch.utils.data import Dataset
from dataclasses import dataclass

IGNORE_INDEX = -100
device = "cuda:0" if torch.cuda.is_available() else "cpu"

IGNORE_INDEX -100, 在 label 中被标注为-100表示不参与 loss 计算。

from transformers import AutoModelForCausalLM, AutoTokenizer

model_dir = r"Qwen/Qwen2.5-0.5B"

model = AutoModelForCausalLM.from_pretrained(model_dir)
model = model.to("cuda:0")

tokenizer = AutoTokenizer.from_pretrained(model_dir, padding_side="right")

image-20250221105420353

据上图所示,发现 Qwen 模型 文本填充与文本结束符 是同一个符号。这给后续计算文本停止符号的 loss计算 带来了麻烦。

这里的讨论可以忽略,如果想加深对 填充符号、文本停止符号、generate停止符的理解,可以阅读下述文本:

如果 文本填充与文本结束符 是同一个符号,那么在 label 中,就不能把全部的填充符号都设置为-100,因为模型的填充符号与文本生成的停止符号是同一个字符。如果全部设置为-100,都不计算 loss,会导致模型学不会生成文本结束符号。当然也可以选择对所有的文本填充符号都计算 loss,这会导致模型学会在生成填充符号之后,下一个字符继续生成填充符号。

踩坑经历:我曾经在微调模型的时候,遇到一种情况,大模型在经过微调后,文本生成结束了还在一直输出[PAD]符号。这个原因就是没有把填充符号[PAD]的 label 设置为-100,导致大模型学会了在遇到[PAD]之后,下一个词依然输出[PAD]。同时也没有把[PAD],作为停止符号,添加到generate方法的停止词中,这才导致了一直生成[PAD]的情况出现。

总而言之,Qwen的填充符与停止符是同一个符号没有问题。在模型调用generate方法生成文本时,虽然模型会一直生成填充符号,但是填充符号同时也是停止符号,模型也会停止文本生成。

由于本文不使用框架训练模型,可以更自由一点,故自定义填充符为[PAD]:

tokenizer.add_special_tokens({
    "pad_token": "[PAD]"
})
tokenizer.pad_token, tokenizer.pad_token_id

输出:

('[PAD]', 151665)

自定义数据集

class PreTrainDataset(Dataset):

    def __init__(self, data: List):
        super().__init__()
        self.data = data

    def __len__(self):
        return len(self.data)

    def __getitem__(self, idx) -> List[Dict]:
        item = self.data[idx]
        text = item["instruct"] + item["input"] + item["label"] + tokenizer.eos_token
        return text

dataset = PreTrainDataset(data)
dataset[0]

输出:

'请你给哪吒写一首诗:哪吒降世,意气飞扬。\n逆天改命,破障冲霄。红绫缠腕,风火踏浪。\n不屈不悔,笑傲苍茫。<|endoftext|>'

很多人都喜欢在自定义数据集里面完成 tokenizer,但我把这个操作留到了 DataCollator 中。

  • 如果在数据集中完成tokenizer,那么就需要在 DataCollator 对 input_ids 和 attention_mask 进行手动填充。
  • 如果在 DataCollator 完成 tokenizer,便无需再对 input_ids 和 attention_mask 手动填充。tokenizer 会默认把这个batch的数据处理完成。只需要手动处理 label。
@dataclass
class DataCollatorForPretrainDataset(object):
    tokenizer: transformers.PreTrainedTokenizer

    def __call__(self, items: Sequence[Dict]) -> Dict[str, torch.Tensor]:

        prompt = [item for item in items]

        prompt_tokenizer = tokenizer(
            prompt,
            return_tensors="pt",
            padding="longest",
            max_length=tokenizer.model_max_length,
            truncation=True,
        )

        labels = prompt_tokenizer["input_ids"].clone()

        # 不对 pad 计算 loss
        pad_idx = labels.eq(tokenizer.pad_token_id)
        labels[pad_idx] = -100

        prompt_tokenizer["labels"] = labels
        return prompt_tokenizer
  • padding="longest"
    
    

    把数据填充到这个 batch中数据的最大长度;

data_collator = DataCollatorForPretrainDataset(tokenizer=tokenizer)
prompt_tokenizer = data_collator([dataset[0], dataset[1]])
prompt_tokenizer

最大长度是 tokenizer中模型是最大长度

大模型预训练的 label很简单,就是input_ids,做一个复制操作就行。

在进行模型训练之前,测试一下, DataCollatorForPretrainDataset 处理数据:

tokenizer.eos_token_id, tokenizer.pad_token_id, 

输出:

(151643, 151665)
data_collator = DataCollatorForPretrainDataset(tokenizer=tokenizer)prompt_tokenizer = data_collator([dataset[0], dataset[1]])prompt_tokenizer

输出:

{'attention_mask': tensor([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
         1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
         1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]),
'input_ids': tensor([[112720,  89012,  99459, 122157,  61443, 108462, 100045,   5122,  99459,
         122157,  99457,  99244,   3837,  36589,  99180, 115449,   8997, 100531,
          35727,  22418,  50509,   3837,  99577,  99884,  99907, 109564,   1773,
          99425, 120827, 103073, 103610,   3837,  99208,  79599, 100875,  99964,
           8997,  16530, 102683,  16530, 103020,   3837,  48738, 102744, 102635,
         100619,   1773, 151643],
        [112720,  89012, 113735, 106980,  61443, 108462, 100045,   5122, 102461,
          55135,  21287,  99465,  44729,   3837,  99718,  15946, 100066, 100167,
         105401,   1773, 100697, 100956,  99349,  77540,  99980,   3837, 114216,
          20412, 105686,  11319, 151643, 151665, 151665, 151665, 151665, 151665,
         151665, 151665, 151665, 151665, 151665, 151665, 151665, 151665, 151665,
         151665, 151665, 151665]]),
'labels': tensor([[112720,  89012,  99459, 122157,  61443, 108462, 100045,   5122,  99459,
         122157,  99457,  99244,   3837,  36589,  99180, 115449,   8997, 100531,
          35727,  22418,  50509,   3837,  99577,  99884,  99907, 109564,   1773,
          99425, 120827, 103073, 103610,   3837,  99208,  79599, 100875,  99964,
           8997,  16530, 102683,  16530, 103020,   3837,  48738, 102744, 102635,
         100619,   1773, 151643],
        [112720,  89012, 113735, 106980,  61443, 108462, 100045,   5122, 102461,
          55135,  21287,  99465,  44729,   3837,  99718,  15946, 100066, 100167,
         105401,   1773, 100697, 100956,  99349,  77540,  99980,   3837, 114216,
          20412, 105686,  11319, 151643,   -100,   -100,   -100,   -100,   -100,
           -100,   -100,   -100,   -100,   -100,   -100,   -100,   -100,   -100,
           -100,   -100,   -100]])}

151643 是文本结束符号,151665 是文本填充符号。

attention_mask 为1的代表有意义的文本,需要参与到向量嵌入计算中。attention_mask 为 0的一般都是填充的符号。

在 decode 模型中, labels 的shape乃至内容,一般都与input_ids 一样。-100代表该位置的值不参与 loss 计算。(众所周知 decode 模型与下一个词计算loss。labels 需要左移一位并在尾部填充-100,这个操作用户无需关心,此操作由transformers包根据数据集中的labels自动转换)

模型训练

args = TrainingArguments(
    output_dir=r"C:\Users\username\Desktop\train_model_output\Qwen2.5-0.5B\CLM_output",
    num_train_epochs=10,
    per_device_train_batch_size=2,
    save_safetensors=True,
    logging_strategy="epoch",
    # fp16=True,
)

utput_dir:模型的保存地址,我的C盘是固态硬盘,加载训练完成后的模型会快一点。

trainer = Trainer(
    model=model,
    processing_class=tokenizer,
    args=args,
    train_dataset=dataset,
    eval_dataset=None,
    data_collator=DataCollatorForSupervisedDataset(tokenizer=tokenizer),
)
参数量估算

我选择 Qwen/Qwen2.5-0.5B 这个模型,因为这个模型参数少,可以更快看到结果。

上述模型微调是全参数微调,没有使用LoRA,会导致显存占用很大。

下述是显存占用的粗略估算的过程:

  1. 全精度,fp32:

    1B = 10^9个参数 = 10^9 x 4Byte = 4GB

    由于我们是全参数微调,那么最终占用的显存是: (模型参数 x1 + 梯度 x1 + Adam优化器 x2)

    0.5 x 4GB x (4) = 8GB
    
    

    8 GB + batch的中间变量内存

  2. 半精度, fp16
    1B = 10^9个参数 = 10^9 x 2Byte = 2GB

    由于我们是全参数微调,那么最终占用的显存是: (模型参数 x1 + 梯度 x1 + Adam优化器 x2)

    0.5 x 2GB x (4) = 4GB
    
    

    4 GB + batch的中间变量内存

模型推理

使用上述训练完成的模型,在训练集的数据上进行推理。

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

device = "cuda:0"if torch.cuda.is_available() else"cpu"

train_model = r"C:\Users\1\Desktop\train_model_output\Qwen2.5-0.5B\CLM_output"

model = AutoModelForCausalLM.from_pretrained(train_model)
model = model.to(device)
tokenizer = AutoTokenizer.from_pretrained(train_model, padding_side="right")

def infer(text):
    input_ids = tokenizer(text, return_tensors="pt").to(model.device)

    generated_ids = model.generate(**input_ids)
    generated_ids = [
        output_ids[len(input_ids) :]
        for input_ids, output_ids in zip(input_ids.input_ids, generated_ids)
    ]

    response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
    return response
text = "请你给哪吒写一首诗:"
infer(text)

输出:

'哪吒降世,意气飞扬。\n逆天改命,破障冲霄。红绫缠腕,风火踏浪。\n不屈不悔,笑傲苍茫。'

通过模型的推理结果,验证了大模型的预训练是有效果的。

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么我作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,希望可以帮助到更多学习大模型的人!至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

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

👉 福利来袭优快云大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

全套AGI大模型学习大纲+路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

640套AI大模型报告合集

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

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉 福利来袭优快云大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

img

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

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

深入解析 FastLanguageModel.from_pretrained:高效加载预训练大语言模型与分词器的实践指南 本文深入解析了FastLanguageModel.from_pretrained方法,指导开发者如何高效加载预训练大语言模型与分词器。文章详细探讨了核心参数配置、4位量化与LoRA微调等性能优化技巧,并针对快速原型、生产部署、参数高效微调等不同应用场景,提供了最佳实践配置方案,帮助读者在资源与精度间取得最佳平衡。 阅读详情

相关推荐

AI开发教程(十一):大模型微调

大模型微调技术指南:原理、实践与优化 本文系统讲解大语言模型(LLM)微调的核心方法与实践策略,帮助开发者高效适配特定场景。微调技术能在保留模型通用能力的基础上,通过少量领域数据显著提升专业任务表现(如医疗问答、代码生成),且成本远低于全量训练。 核心内容: 微调原理:对比全量微调与参数高效方法(LoRA、PrefixTuning等),分析适用场景与性能差异。 实战流程:以医疗问答为例,详解LoRA微调全流程,包括数据预处理、模型量化、训练部署及评估优化。 进阶技术:覆盖多任务适配、增量微调及推理优化(如4

分享知识,拥抱变化 891

使用 FastLanguageModel 的 from_pretrained 方法加载一个已经预训练好的大语言模型及其对应的分词器(tokenizer)

简单来说,这段代码就是在告诉系统:“请加载一个名为 ‘meta-llama/Llama-3.1-8B’ 的预训练模型,配置它一次能处理最多2048个 token,并且不要使用4位量化(保持全精度)。”这样做的好处是,你得到一个既能处理长文本又能保持高精度的模型和对应的分词器,方便后续进行微调或推理任务。

陈开心的博客 2583

多模态大模型应用:VQGAN+CLIP本地化部署实战指南

多模态大模型代表了当前人工智能领域的一项重要技术突破。它们是指能同时处理并理解多种不同类型数据(如文本、图像、声音等)的模型。这类模型通常拥有数亿甚至数千亿的参数,能够在复杂场景下提供高质量的分析结果,从而极大地扩展了人工智能的应用范围。生成对抗网络(GAN)由Ian Goodfellow在2014年提出以来,生成模型成为机器学习领域研究的热点。GAN利用两个网络——生成器和判别器——进行对抗训练,生成器试图生成逼真的数据,而判别器则试图区分真实数据和生成数据。

weixin_42124497的博客 1036

仅用61行代码,你也能从零训练大模型

本文并非基于微调训练模型,而是从头开始训练出一个全新的大语言模型的硬核教程。看完本篇,你将了解训练出一个大模型的环境准备、数据准备,生成分词,模型训练、测试模型等环节分别需要做什么。AI 小白友好~文中代码可以直接实操运行。欢迎阅读体验。

QcloudCommunity的博客 1333

第 4 课 树莓派5的换源与中文输入法

树莓派换源、中文输入法的安装

嵌入式老牛的博客 2285

当迁移学习遇见室内定位:基于UJIIndoorLoc的跨场景适配实践

本文探讨了迁移学习在跨建筑室内定位中的应用,重点解析了UJIIndoorLoc数据集的特性及其在解决设备差异和环境变化中的关键作用。通过特征工程、迁移学习策略和小样本微调技术,显著提升了定位模型的跨场景适配能力,为实际部署提供了有效解决方案。

weixin_29038155的博客 394

GitHub霸榜项目!上海交大《动手学大模型》开源教程,从入门到实战全攻略

一行行清晰的代码,一个个精心设计的实验,上海交大这份开源教程正在降低大模型技术的学习门槛,让每个人都能动手实践AI前沿技术。

1万+

【实战指南】Green Hills MULTI-IDE 从零安装到工程创建全流程

本文详细介绍了Green Hills MULTI-IDE从零安装到工程创建的全流程,包括系统要求检查、安装步骤、工程配置及调试技巧。特别适合嵌入式开发新手快速上手这款专业IDE工具,提升开发效率。

weixin_28740299的博客 474

【大模型入门实战】手把手从零预训练大模型,完整代码带你快速上路,大神养成第一步!

本文介绍了从零预训练中文大语言模型的实战方法。使用Huggingface Transformers库构建一个约120M参数的中文LLM,基于通义千问2的架构进行简化。数据集采用1.99G的中文维基百科数据,包含144万条文本。教程详细说明了环境配置、数据加载、模型构建、训练参数设置等步骤,并推荐使用SwanLab进行训练监控和可视化。文章还提供了完整的Python代码实现,帮助读者快速上手大模型预训练。

2401_85343303的博客 1446

C# 开发实战:深度解析 13.56MHz 射频卡读写应用

本文详细介绍了如何在 C# 环境下开发 13.56MHz 射频卡的读写应用。通过 ACR122U 作为硬件设备,结合 C# 提供的 COM 组件或 SDK,我们能够实现对射频卡的读取与写入功能。在实际开发中,开发者还需要根据具体应用场景选择合适的卡片类型与设备,并注意性能优化和异常处理。随着技术的发展,RFID 技术的应用场景会越来越广泛,开发者可以根据不同需求,灵活扩展读写功能,实现更加智能化和自动化的系统。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1596

18、Excel VBA编程:自定义函数创建与代码调试全攻略

本文详细介绍了Excel VBA中自定义函数的创建方法,以获取单元格注释为例演示了完整开发流程,并深入讲解了代码调试的重要性与核心工具。内容涵盖三种主要错误类型及其应对策略,系统介绍了调试工具栏、断点、逐行执行、Locals窗口、Immediate窗口等实用功能。通过综合案例展示了如何运用调试技术解决实际问题,并总结了提前规划、逐步测试、日志记录等最佳实践,帮助读者提升VBA编程效率与代码质量。

life6的博客 100

大模型炼丹术(五):LLM自回归预训练过程详解

在前面的4篇文章中,我们已经完成了整个数据流向所需的模块构建,包括tokenizer,embedding,注意力机制,并串联得到了GPT2这个LLM架构。现在,是时候准备开始训练我们的LLM了。相比于前面发布的4篇文章,本文将更加偏重于代码实战。

DEVELOPERAA的博客 1364

Python爬虫教程:爬取法院司法拍卖数据全流程实战(附反爬+数据分析方案)

Python爬虫爬取法院司法拍卖数据的核心是模拟真人行为规避反爬+精准解析页面数据+合理处理数据。新手不用一开始就追求高级的反爬技巧和复杂的数据分析,先把基础的分页爬取和数据保存功能跑通,再逐步优化。我做的这个工具现在每周帮朋友爬取全国10个城市的法拍房数据,自动生成分析报告,他说这让他的投资决策效率提升了一倍。如果你们在开发过程中遇到问题,比如反爬失败、数据解析错误,都可以在评论区留言,我会尽力解答。后续我还会出一期爬取京东司法拍卖数据的教程,帮助大家获取更多的法拍数据来源。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2176

一文搞懂大模型的预训练(Pre-training),大模型入门到精通,收藏这篇就足够了!

预训练(Pre-training)是大语言模型(如BERT、GPT)训练的第一阶段,其核心目标是通过自监督学习从海量无标注文本中学习通用的语言表示(Language Representation)。

2301_81940605的博客 824

Qt代码-军用仿真系统基础框架

ui->mapClickLabel->setText(QString("地图点击:(%.1f, %.1f)米").arg(worldPos.x()).arg(worldPos.y()));emit simulationEvent(QString("添加实体: %1 (ID: %2)").arg(attr.name).arg(entity.id()));// 像素坐标→世界坐标(米)

寒寒豆豆软件公司的博客 168

基于Gossip算法的柔性互联自治微网群分布式协调控制策略:复现代码与详细解释

摘要(149字): 本文基于Gossip算法实现了柔性互联微网群(MMG)的分布式协调控制策略仿真。研究构建了包含3个微网、10个分布式电源(DG)的MATLAB/Simulink模型,采用双层控制架构:上层通过柔性交流开关(FAS)实现微网间功率协调,下层利用Gossip算法完成DG间的边际成本一致性控制。重点开发了异步通信的Gossip算法核心函数,实现了分布式电源的自主边际成本估计与功率分配。仿真验证了系统在负荷变化和DG故障等工况下的协调控制能力,结果表明该策略能有效维持微网群的经济运行与功率平衡。

huanghm88的专栏 281

AI大模型开发实战指南:从多模态到情感计算(附完整实战代码)

AI大模型开发实战指南:从多模态到情感计算(附完整实战代码)

lvaolan168的博客 926

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

AI大模型实战教程:基于LLM模型实现高效文本分类!

LLM(Language Model-based Learning)模型是一种基于语言模型的机器学习方法,它可以用于实现文本分类任务。文本分类是指将文本数据分配到一个或多个预先定义的类别中。LLM模型利用预先训练的语言模型(如BERT、XLNet、GPT等)来捕捉文本数据的深层语义信息。这些语言模型通过大量文本数据进行预训练,能够理解自然语言的上下文关系。在文本分类任务中,LLM模型将输入文本转换为向量表示,然后通过分类器(如全连接层)进行分类。

2401_84494441的博客 1077

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

AI大模型教程来了(大模型从入门到实战)AI大模型颠覆时代!带你从0到精通,高薪就业不是梦!

《AI大模型系列课程》推出30节系统化课程,涵盖理论、论文精读与实战三大模块。课程内容包括大模型基础理论(NLP、LLAMA2等)、核心技术(量化压缩、剪枝、RLHF)、前沿应用(医疗、扩散模型)及企业级项目实战(聊天机器人开发)。配套提供500+精选论文和分阶段学习路径,承诺3个月快速进阶方案,包含基础掌握、RAG开发、Agent架构到私有化部署全流程。课程强调大模型作为未来AI基础设施的重要性,并提供全套免费学习资料,助力学习者高效掌握大模型核心技术。

2401_84204207的博客 261

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

AI大模型入门实战教程!属于你的第一个大模型_如何自己从0开始制作一个ai大模型

AI大模型是指具有大量参数和复杂结构的人工智能模型。这些模型通常需要大量的计算资源和数据来进行训练,以实现高性能的预测和生成能力。近年来,随着计算能力的提高和数据量的增加,AI大模型在各种任务中取得了显著的成果,如自然语言处理、计算机视觉和强化学习等。AI大模型在近年来取得了显著的进展,但仍面临许多挑战和发展趋势,例如:模型压缩与加速:随着模型规模的增加,计算资源和存储需求也在不断增加。未来的研究需要关注如何压缩和加速大模型,以适应更多的应用场景。

大模型工程师老蓝的博客 1065

大佬级大模型微调手把手教程(小白能懂,代码可直接复制,全程实战无坑)

现在的大模型(GPT、通义千问、LLaMA等),就像一个“饱读诗书的通才”——能聊天、写代码、做总结,但面对你的具体需求(比如公司客服话术、行业专业问答、专属风格生成),总会显得“不够精准”。而大模型微调,就是“给通才做专项培训”,用少量专属数据,让通用大模型变成“你的专属AI助手”,精准适配你的业务场景。我见过太多小白对微调的困惑:“微调是不是很难?需要高深的数学功底吗?”“没有高端GPU能做微调吗?”“代码太复杂,小白根本看不懂”。

density666的博客 554

神级80K星标!这绝对是最适合新手入门的AI大模型教程

《Large Language Model Course》(LLM-Course)是由谷歌AI开发者mlabonne创建的开源教程(GitHub 80.4k Stars),系统化讲解大模型技术。课程分为三大模块: 基础入门:涵盖数学、Python、神经网络与NLP前置知识,零基础友好。 研究者路线:深入大模型架构、预训练、微调、量化等底层原理,适合学术研究。 开发者路线:聚焦RAG、Agent开发、部署优化等实战应用,适合职业需求。 配套资源包括中文翻译、30篇核心论文PDF、代码及行业报告,并提供分阶段学

2601_96292947的博客 204

大模型系列炼丹术(五):LLM自回归预训练过程详解

在前面的4篇文章中,我们已经完成了整个数据流向所需的模块构建,包括tokenizer,embedding,注意力机制,并串联得到了GPT2这个LLM架构。

pythonhy的博客 704

从零预训练一个自己的大模型(完整代码)【附教程】

大语言模型(Large Language Model,简称LLM),指使用大量文本数据训练的深度学习模型,可以生成自然语言文本或理解语言文本的含义。

2301_81940605的博客 1978

一文搞懂大模型的预训练、微调和蒸馏

初学者常对大模型的预训练(Pre-training)、微调(Fine-tuning)和蒸馏(Distillation)感到困惑,三者虽均属模型训练,但目标、数据和实现方式差异显著。预训练使用海量无标注标注数据(如互联网文本、图像库)进行通识教育(大学基础课程);微调使用专业领域标注数据(如医疗影像、法律文书、代码库)进行专业培训(入职后的岗位技能培训);蒸馏使用教师模型的输出(如概率分布、推理链)进行经验传承(老员工带新人)。

star_nwe的博客 1752
上一篇: 震撼!HuggingFace 超大规模训练手册来袭,解锁 GPU 集群训 LLM 密码
下一篇: LoRA、完全微调到底有何不同?MIT 21页论文讲明白了
少喝冰美式
博客等级 码龄2年 6828粉丝 517原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值