AI与大模型使用踩坑记录
去年开始折腾AI大模型,从文本生成到图像生成,踩了不少坑。记录一下实战经验和心得。
国内主流大模型
| 模型 |
公司 |
特点 |
| ChatGLM |
智谱AI |
中文优化,128K上下文 |
| 文心一言 |
百度 |
多模态,搜索整合 |
| 通义千问 |
阿里 |
开源,多尺寸 |
| 讯飞星火 |
科大讯飞 |
语音能力强 |
| 豆包 |
字节跳动 |
多场景应用 |
| Kimi |
Moonshot |
超长上下文 |
智谱清言GLM-4
GLM-4是智谱AI的最新模型,中文场景表现不错。
核心特性
- 128K上下文窗口
- 100%召回率(128K范围内)
- 中文能力超越GPT-4约10%
- 英文能力达到GPT-4约90%
API调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| from openai import OpenAI
client = OpenAI( api_key="your-api-key", base_url="https://open.bigmodel.cn/api/paas/v4/" )
response = client.chat.completions.create( model="glm-4", messages=[ {"role": "system", "content": "你是一个有用的助手"}, {"role": "user", "content": "你好"} ] )
print(response.choices[0].message.content)
|
召回率是什么
召回率 = 检索到的相关信息数 / 相关信息总数
比如文档里有10个关键事实,模型正确找出9个,召回率就是90%。GLM-4在128K范围内号称100%召回率,也就是能找到文档里的任何信息。
模型下载
魔搭社区(ModelScope)
国内下载模型最方便的方式。
1 2 3 4 5
| pip install modelscope
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b-32k.git
|
Python SDK下载:
1 2 3 4
| from modelscope import snapshot_download
model_dir = snapshot_download("ZhipuAI/chatglm3-6b-32k") print(f"Model downloaded to: {model_dir}")
|
Hugging Face镜像
国内访问HF受限,用镜像:
1 2 3 4 5 6 7
| import os os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True) tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True)
|
Stable Diffusion与AI绘图
绘世启动器(SD-WebUI)
国产整合包,开箱即用。
下载:https://www.bilibili.com/read/cv31254871/
目录结构:
1 2 3 4 5
| SD-WebUI/ ├── models/ # 模型文件 ├── extensions/ # 插件 ├── outputs/ # 输出目录 └── webui-user.bat # 启动脚本
|
启动:双击webui-user.bat,浏览器访问http://localhost:7860
显存要求
| 显存 |
推荐模型 |
分辨率 |
| 4GB |
SD 1.5 + 优化 |
512x512 |
| 6GB |
SD 1.5/2.1 |
512x512-768x768 |
| 8GB |
SDXL |
1024x1024 |
| 12GB+ |
SDXL + ControlNet |
1024x1024+ |
虚拟内存配置
AI绘图吃内存,可能需要配置虚拟内存。
Windows配置:
- 右键”此电脑” -> 属性
- 高级系统设置 -> 性能设置 -> 高级 -> 虚拟内存更改
- 取消”自动管理”
- 设置自定义大小:
- 初始大小:61440 MB (60GB)
- 最大值:81920 MB (80GB)
- 点击设置,确定
注意:部分用户需要60GB以上虚拟内存才能跑SDXL。
LoRA模型训练
LoRA是高效的模型微调技术,消费级显卡就能训练。
硬件要求
| 配置 |
最低 |
推荐 |
| 显卡 |
GTX 1060 6GB |
RTX 3060 12GB+ |
| 内存 |
16GB |
32GB+ |
| 存储 |
50GB SSD |
100GB+ SSD |
环境准备
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
python -m venv lora-env
lora-env\Scripts\activate
source lora-env/bin/activate
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install diffusers transformers accelerate pip install bitsandbytes xformers
|
数据准备
数据集结构:
1 2 3 4 5 6 7 8
| Dataset/ ├── 1_girl/ # 触发词_类别 │ ├── 0001.png │ ├── 0001.txt # 标注文件 │ ├── 0002.png │ └── 0002.txt └── 2_style/ └── ...
|
标注文件格式:
1
| 1girl, solo, long hair, red eyes, school uniform, looking at viewer
|
打标工具:
| 工具 |
特点 |
| WD 1.4 Tagger |
自动打标,准确率高 |
| BooruDatasetTagManager |
可视化编辑 |
| Dataset Tag Editor |
批量编辑,WebUI插件 |
训练参数
| 参数 |
说明 |
推荐值 |
| batch_size |
批次大小 |
2-4 |
| learning_rate |
学习率 |
1e-4 - 1e-3 |
| steps |
训练步数 |
1000-5000 |
| network_dim |
网络维度 |
32-128 |
| network_alpha |
Alpha值 |
通常dim的一半 |
| resolution |
训练分辨率 |
512/768/1024 |
训练命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| accelerate launch --num_cpu_threads_per_process=2 train_network.py \ --pretrained_model_name_or_path="runwayml/stable-diffusion-v1-5" \ --train_data_dir="./Dataset" \ --output_dir="./output" \ --network_dim=64 \ --network_alpha=32 \ --resolution=512 \ --train_batch_size=2 \ --learning_rate=1e-4 \ --max_train_steps=2000 \ --save_every_n_steps=500 \ --optimizer_type="AdamW8bit" \ --xformers \ --mixed_precision="fp16"
|
训练视频教程:https://www.bilibili.com/video/BV1fs4y1x7p2/
API调用优化
重试机制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| import time from functools import wraps
def retry_on_error(max_retries=3, delay=1): def decorator(func): @wraps(func) def wrapper(*args, **kwargs): for i in range(max_retries): try: return func(*args, **kwargs) except Exception as e: if i == max_retries - 1: raise print(f"Retry {i+1}/{max_retries}: {e}") time.sleep(delay * (i + 1)) return None return wrapper return decorator
@retry_on_error(max_retries=3) def call_ai_api(prompt): response = client.chat.completions.create( model="glm-4", messages=[{"role": "user", "content": prompt}], temperature=0.7, max_tokens=2000 ) return response.choices[0].message.content
|
提示工程技巧
结构化提示:
1 2 3 4 5 6 7 8 9 10 11 12 13
| # 角色定义 你是专业的技术文档工程师。
# 任务描述 请将以下代码转换为Markdown格式的教程。
# 输入 {code}
# 输出要求 1. 使用中文 2. 包含代码块 3. 添加必要的注释说明
|
上下文管理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| messages = [ {"role": "system", "content": "你是一个精通Python的编程助手。"}, {"role": "user", "content": "请解释什么是装饰器"} ]
conversation_history = []
def chat(message): conversation_history.append({"role": "user", "content": message}) response = client.chat.completions.create( model="glm-4", messages=conversation_history ) reply = response.choices[0].message.content conversation_history.append({"role": "assistant", "content": reply}) return reply
|
成本控制
| 模型 |
输入价格 |
输出价格 |
| GLM-4 |
¥0.01/1K tokens |
¥0.01/1K tokens |
| GLM-4-Air |
¥0.001/1K tokens |
¥0.001/1K tokens |
| GPT-3.5 |
$0.0015/1K tokens |
$0.002/1K tokens |
优化建议:
- 缓存响应,重复问题直接返回
- 压缩输入,移除不必要的上下文
- 根据任务选择性价比最高的模型
- 使用流式输出减少等待时间
资源汇总
模型下载平台
| 平台 |
网址 |
特点 |
| 魔搭社区 |
modelscope.cn |
国内最方便 |
| Hugging Face |
huggingface.co |
全球最大 |
| Civitai |
civitai.com |
图像模型丰富 |
| 百度飞桨 |
paddlepaddle.org.cn |
中文资源丰富 |
开发工具
| 工具 |
用途 |
| Ollama |
本地运行大模型 |
| LM Studio |
本地模型管理 |
| ComfyUI |
可视化AI绘图 |
| Automatic1111 |
Stable Diffusion WebUI |
AI大模型发展太快,每天都有新东西。建议:
- 先从API调用开始,了解大模型能做什么
- 有条件的话本地部署试试,感受下硬件门槛
- LoRA训练需要一定显存,量力而行
- 成本控制很重要,尤其是商用场景
- 提示工程是个技术活,多练多试
有问题的欢迎留言讨论。