别再发“最终版3”了:PCB哪一版交给了工厂,应该这样查
2026/10/20 4:16:08
GLM-4-9B-Chat-1M是智谱AI推出的开源大语言模型,专为处理超长文本场景设计。想象一下,当你需要分析整本小说、大型代码库或数百页合同时,传统模型往往因为上下文长度限制而"前聊后忘"。这个模型完美解决了这个问题,同时还能在普通显卡上运行。
为什么选择本地部署?
虽然模型参数高达90亿,但通过4-bit量化技术,最低配置要求相当亲民:
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| GPU | NVIDIA 8GB显存 | NVIDIA 16GB+显存 |
| 内存 | 16GB | 32GB+ |
| 存储 | 20GB可用空间 | SSD硬盘 |
python -m venv glm-env source glm-env/bin/activate # Linux/Mac # 或 glm-env\Scripts\activate # Windowspip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install streamlit transformers accelerate bitsandbytesgit lfs install git clone https://huggingface.co/THUDM/glm-4-9b-chat-1m运行以下命令启动Web界面:
streamlit run app.py --server.port 8080等待终端显示URL后(通常是http://localhost:8080),在浏览器打开即可。
长文本处理示例:
代码分析示例:
# 粘贴你的报错代码 def calculate_average(numbers): total = sum(numbers) return total / len(numbers) print(calculate_average([])) # 这里会引发ZeroDivisionError提问:"这段代码有什么问题?如何修复?"
预训练模型虽然强大,但在特定领域(如法律、医疗)可能表现不佳。LoRA(Low-Rank Adaptation)技术让我们能用少量数据微调模型,使其更懂你的专业领域。
LoRA优势:
创建JSON格式的训练文件train.json:
[ { "instruction": "解释什么是专利侵权", "input": "", "output": "专利侵权是指未经专利权人许可..." }, { "instruction": "这份合同中的关键条款是什么?", "input": "{粘贴合同文本}", "output": "关键条款包括:1. 保密义务..." } ]创建finetune.py:
from transformers import AutoModelForCausalLM, AutoTokenizer from peft import LoraConfig, get_peft_model model = AutoModelForCausalLM.from_pretrained( "THUDM/glm-4-9b-chat-1m", load_in_4bit=True, device_map="auto" ) tokenizer = AutoTokenizer.from_pretrained("THUDM/glm-4-9b-chat-1m") # 添加LoRA适配器 lora_config = LoraConfig( r=8, # 矩阵秩 lora_alpha=32, target_modules=["query_key_value"], lora_dropout=0.05, bias="none", task_type="CAUSAL_LM" ) model = get_peft_model(model, lora_config) model.print_trainable_parameters() # 查看可训练参数数量from transformers import TrainingArguments, Trainer training_args = TrainingArguments( output_dir="./output", per_device_train_batch_size=1, gradient_accumulation_steps=4, num_train_epochs=3, learning_rate=2e-4, fp16=True, save_steps=500, logging_steps=10 ) trainer = Trainer( model=model, args=training_args, train_dataset=train_dataset, # 需提前加载数据 data_collator=lambda data: {'input_ids': torch.stack([f[0] for f in data]), 'attention_mask': torch.stack([f[1] for f in data]), 'labels': torch.stack([f[0] for f in data])} ) trainer.train()训练完成后,将适配器合并到原模型:
model = model.merge_and_unload() model.save_pretrained("./merged_model")进一步减小模型体积:
from transformers import BitsAndBytesConfig quant_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_use_double_quant=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.bfloat16 ) quantized_model = AutoModelForCausalLM.from_pretrained( "./merged_model", quantization_config=quant_config, device_map="auto" )通过本教程,你已经学会了:
进阶建议:
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。