实验一:open_llama_3b + Alpaca + 8-bit + LoRA
环境:colab T4
1.安装依赖
!pip install transformers accelerate bitsandbytes peft
2.加载 open_llama_7b 模型(8bit 量化)
from transformers import LlamaForCausalLM, LlamaTokenizer, BitsAndBytesConfig
model_id = "openlm-research/open_llama_3b"
tokenizer = LlamaTokenizer.from_pretrained(model_id)
bnb_config = BitsAndBytesConfig(
load_in_8bit=True,
llm_int8_threshold=6.0
)
model = LlamaForCausalLM.from_pretrained(
model_id,
device_map="auto",
quantization_config=bnb_config
)
8bit量化:
- 深度学习模型中的权重(参数)通常以 32-bit 浮点数(float32) 存储
- 为了节省内存和加速推理,我们可以把这些权重 压缩成更低精度的数据类型
- 8-bit 量化 就是把权重从 float32 压缩为 int8(1 字节) 或等价的 8-bit 表达形式
bnb_config = BitsAndBytesConfig(
load_in_8bit=True, # 启用 8bit 加载
llm_int8_threshold=6.0, # 控制哪些模块使用 int8
llm_int8_skip_modules=None # 不跳过任何模块
)
llm_int8_threshold=6.0:这是一个经验性阈值,控制 哪些线性层是否应该被量化成 int8。 对于每个 Linear 层,bitsandbytes 会自动估算一个权重的量纲范围(weight norm) 。如果这个范围 > llm_int8_threshold,就会跳过量化,保留 FP16 或 FP32
llm_int8_skip_modules=None :用于手动指定你不想量化的模块名。例如,llm_int8_skip_modules=[“lm_head”, “embed_tokens”]
3. 加载 Alpaca 数据集(tatsu-lab 提供的 52K 指令数据)
from datasets import load_dataset
dataset = load_dataset("tatsu-lab/alpaca")["train"]
# 统一格式为 Alpaca prompt 风格:
def format_prompt(example):
if example["input"]:
return f"### Instruction:\n{example['instruction']}\n\n### Input:\n{example['input']}\n\n### Response:\n{example['output']}"
else:
return f"### Instruction:\n{example['instruction']}\n\n### Response:\n{example['output']}"
dataset = dataset.map(lambda x: {"text": format_prompt(x)})
4. 配置 LoRA adapter(使用 PEFT)
from peft import LoraConfig, get_peft_model, TaskType
peft_config = LoraConfig(
task_type=TaskType.CAUSAL_LM,
r=8,
lora_alpha=32,
lora_dropout=0.05,
target_modules=["q_proj", "v_proj"]
)
model = get_peft_model(model, peft_config)
5. Tokenize 文本
def tokenize(example):
return tokenizer(example["text"], truncation=True, max_length=256, padding="max_length")
tokenized_dataset = dataset.map(tokenize, batched=True)
6. 设置训练参数(含 fp16、batch size、保存策略等)
from transformers import TrainingArguments, Trainer, DataCollatorForLanguageModeling
training_args = TrainingArguments(
per_device_train_batch_size=1,
gradient_accumulation_steps=8,
learning_rate=2e-5,
num_train_epochs=1,
fp16=True,
logging_steps=10,
save_strategy="epoch",
output_dir="./lora-llama3b-out",
report_to="none"
)
7. 开始训练
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_dataset,
data_collator=DataCollatorForLanguageModeling(tokenizer, mlm=False)
)
trainer.train()
代码中的config
名称 | 作用 | 定义方式 | 用处 |
---|---|---|---|
✅ 模型 config | 控制 LLaMA 结构等 | model.config | 加载模型时自动加载 |
✅ LoRA config | 控制 LoRA adapter 插入位置 | LoraConfig(…) | get_peft_model(…) |
✅ 训练 config | 控制 optimizer/logging/save | TrainingArguments(…) | Trainer(…) |
✅ 推理 config | 控制 .generate() 推理行为 | 隐式调用 or GenerationConfig(…) | 如果你用了 .generate() |
✅ Collator config | 控制数据 batch 拼接方式 | DataCollatorForLanguageModeling(…) | Trainer(…, data_collator =…) |
那么,如何系统的去学习大模型LLM?
作为一名从业五年的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。
所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。
由于篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~
👉大模型学习指南+路线汇总👈
我们这套大模型资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。
👉①.基础篇👈
基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。
👉②.进阶篇👈
接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
👉③.实战篇👈
实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。
👉④.福利篇👈
最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!