配置参数说明
1. 配置文件概述
1.1 配置文件结构
AI UI生成系统使用多个配置文件来管理不同模块的参数:
config/
├── model_config.yaml # 模型和训练配置
├── ui_tokens.json # UI主题和组件配置
└── nginx.conf # Nginx配置(可选)
1.2 配置优先级
配置参数的优先级从高到低:
- 环境变量 - 最高优先级
- 命令行参数 - 次高优先级
- 配置文件 - 中等优先级
- 默认值 - 最低优先级
1.3 配置验证
系统启动时会自动验证配置参数的有效性,无效参数会导致启动失败并显示详细错误信息。
2. 模型配置详解
2.1 配置文件位置
文件路径: config/model_config.yaml
2.2 模型基础配置
# 模型配置
model:
base_model: "google/flan-t5-base" # 基础模型
max_length: 512 # 最大序列长度
temperature: 0.7 # 生成温度
top_p: 0.9 # 核采样参数
top_k: 50 # Top-K采样
参数详解
| 参数 | 类型 | 默认值 | 取值范围 | 描述 |
|---|---|---|---|---|
base_model | string | "google/flan-t5-base" | 有效的HuggingFace模型ID | 基础语言模型名称 |
max_length | int | 512 | 64-2048 | 输入和输出的最大序列长度 |
temperature | float | 0.7 | 0.0-2.0 | 控制生成文本的随机性,值越高越随机 |
top_p | float | 0.9 | 0.0-1.0 | 核采样参数,控制词汇选择的多样性 |
top_k | int | 50 | 1-1000 | Top-K采样,限制候选词汇数量 |
推荐配置
开发环境:
model:
base_model: "google/flan-t5-small" # 使用小模型,加载更快
max_length: 256 # 减少内存使用
temperature: 0.8 # 增加创造性
生产环境:
model:
base_model: "google/flan-t5-base" # 使用基础模型,平衡性能和质量
max_length: 512 # 标准长度
temperature: 0.7 # 平衡创造性和一致性
2.3 LoRA配置
# LoRA配置
lora:
r: 16 # LoRA秩
lora_alpha: 32 # LoRA缩放参数
lora_dropout: 0.1 # LoRA dropout
target_modules: ["q", "v"] # 目标模块
参数详解
| 参数 | 类型 | 默认值 | 取值范围 | 描述 |
|---|---|---|---|---|
r | int | 16 | 1-64 | LoRA的秩,控制参数量,值越大参数量越多 |
lora_alpha | int | 32 | 1-128 | LoRA缩放参数,通常设为r的2倍 |
lora_dropout | float | 0.1 | 0.0-0.5 | Dropout率,防止过拟合 |
target_modules | list | ["q", "v"] | 模型中的模块名列表 | 应用LoRA的目标模块 |
推荐配置
快速训练:
lora:
r: 8 # 较小的秩
lora_alpha: 16 # 对应的alpha
lora_dropout: 0.05 # 较小的dropout
target_modules: ["q", "v"] # 只针对注意力层
高质量训练:
lora:
r: 32 # 较大的秩
lora_alpha: 64 # 对应的alpha
lora_dropout: 0.1 # 标准dropout
target_modules: ["q", "v", "k", "o"] # 针对更多模块
2.4 训练配置
# 训练配置
training:
learning_rate: 2e-4 # 学习率
batch_size: 4 # 批次大小
gradient_accumulation_steps: 4 # 梯度累积步数
num_epochs: 3 # 训练轮数
warmup_steps: 100 # 预热步数
max_grad_norm: 1.0 # 梯度裁剪
fp16: true # 半精度训练
dataloader_num_workers: 4 # 数据加载器工作进程数
参数详解
| 参数 | 类型 | 默认值 | 取值范围 | 描述 |
|---|---|---|---|---|
learning_rate | float | 2e-4 | 1e-6-1e-2 | 学习率,控制参数更新步长 |
batch_size | int | 4 | 1-32 | 批次大小,根据GPU内存调整 |
gradient_accumulation_steps | int | 4 | 1-16 | 梯度累积步数,模拟更大的批次 |
num_epochs | int | 3 | 1-20 | 训练轮数,完整遍历数据集的次数 |
warmup_steps | int | 100 | 0-1000 | 预热步数,学习率从0逐渐增加到设定值 |
max_grad_norm | float | 1.0 | 0.1-10.0 | 梯度裁剪阈值,防止梯度爆炸 |
fp16 | bool | true | true/false | 是否使用半精度训练,节省内存 |
dataloader_num_workers | int | 4 | 0-16 | 数据加载器工作进程数 |
推荐配置
GPU内存 < 8GB:
training:
batch_size: 2 # 小批次
gradient_accumulation_steps: 8 # 增加累积步数
fp16: true # 启用半精度
dataloader_num_workers: 2 # 减少工作进程
GPU内存 >= 16GB:
training:
batch_size: 8 # 大批次
gradient_accumulation_steps: 2 # 减少累积步数
fp16: true # 启用半精度
dataloader_num_workers: 8 # 增加工作进程
2.5 数据配置
# 数据配置
data:
train_split: 0.8 # 训练集比例
val_split: 0.1 # 验证集比例
test_split: 0.1 # 测试集比例
max_samples: 10000 # 最大样本数
参数详解
| 参数 | 类型 | 默认值 | 取值范围 | 描述 |
|---|---|---|---|---|
train_split | float | 0.8 | 0.5-0.9 | 训练集占总数据的比例 |
val_split | float | 0.1 | 0.05-0.2 | 验证集占总数据的比例 |
test_split | float | 0.1 | 0.05-0.2 | 测试集占总数据的比例 |
max_samples | int | 10000 | 100-1000000 | 最大样本数,用于限制数据集大小 |
2.6 UI配置
# UI配置
ui:
themes:
- "obsidian-gold" # 黑金主题
- "silver-white" # 白银主题
- "minimal" # 简约主题
page_types:
- "home" # 首页
- "detail" # 详情页
- "search" # 搜索页
- "profile" # 个人页
- "publish" # 发布页
2.7 渲染配置
# 渲染配置
render:
image:
width: 375 # 图片宽度
height: 812 # 图片高度
dpi: 72 # 图片DPI
vue:
framework: "uniapp" # Vue框架
components_path: "components" # 组件路径
参数详解
| 参数 | 类型 | 默认值 | 取值范围 | 描述 |
|---|---|---|---|---|
width | int | 375 | 200-800 | 生成图片的宽度(像素) |
height | int | 812 | 400-2000 | 生成图片的高度(像素) |
dpi | int | 72 | 72-300 | 图片分辨率,影响图片质量 |
framework | string | "uniapp" | 支持的框架名 | Vue框架类型 |
components_path | string | "components" | 有效路径 | 组件文件路径 |
2.8 API配置
# API配置
api:
host: "0.0.0.0" # API主机
port: 8000 # API端口
workers: 1 # 工作进程数
timeout: 300 # 请求超时时间
参数详解
| 参数 | 类型 | 默认值 | 取值范围 | 描述 |
|---|---|---|---|---|
host | string | "0.0.0.0" | 有效IP地址 | API服务绑定的主机地址 |
port | int | 8000 | 1024-65535 | API服务端口号 |
workers | int | 1 | 1-32 | 工作进程数,建议设为CPU核心数 |
timeout | int | 300 | 30-3600 | 请求超时时间(秒) |
2.9 日志配置
# 日志配置
logging:
level: "INFO" # 日志级别
format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
file: "logs/ai-ui-system.log" # 日志文件路径
参数详解
| 参数 | 类型 | 默认值 | 可选值 | 描述 |
|---|---|---|---|---|
level | string | "INFO" | DEBUG, INFO, WARNING, ERROR, CRITICAL | 日志记录级别 |
format | string | 默认格式 | 自定义格式字符串 | 日志输出格式 |
file | string | "logs/ai-ui-system.log" | 有效文件路径 | 日志文件保存路径 |
3. UI令牌配置详解
3.1 配置文件位置
文件路径: config/ui_tokens.json
3.2 主题配置结构
{
"themes": {
"theme_name": {
"name": "主题显示名称",
"colors": { ... },
"typography": { ... },
"spacing": { ... },
"border_radius": { ... },
"shadows": { ... }
}
}
}
3.3 颜色配置
"colors": {
"primary": "#FFD700", // 主色调
"secondary": "#B8860B", // 辅助色
"background": "#0E0E0E", // 背景色
"surface": "#1A1A1A", // 表面色
"text": "#FFFFFF", // 主文本色
"text_secondary": "#CCCCCC", // 次要文本色
"border": "#333333", // 边框色
"accent": "#FF6B35", // 强调色
"success": "#4CAF50", // 成功色
"warning": "#FF9800", // 警告色
"error": "#F44336" // 错误色
}
颜色参数说明
| 参数 | 描述 | 使用场景 |
|---|---|---|
primary | 主色调 | 按钮、链接、重要元素 |
secondary | 辅助色 | 次要按钮、装饰元素 |
background | 背景色 | 页面主背景 |
surface | 表面色 | 卡片、面板背景 |
text | 主文本色 | 标题、正文 |
text_secondary | 次要文本色 | 说明文字、标签 |
border | 边框色 | 边框、分割线 |
accent | 强调色 | 高亮、特殊标记 |
success | 成功色 | 成功状态、确认 |
warning | 警告色 | 警告信息、注意 |
error | 错误色 | 错误信息、删除 |
3.4 字体配置
"typography": {
"font_family": "PingFang SC, -apple-system, BlinkMacSystemFont, sans-serif",
"font_size": {
"xs": "12px", // 极小字体
"sm": "14px", // 小字体
"base": "16px", // 基础字体
"lg": "18px", // 大字体
"xl": "20px", // 超大字体
"2xl": "24px", // 2倍大字体
"3xl": "30px" // 3倍大字体
},
"font_weight": {
"normal": "400", // 正常粗细
"medium": "500", // 中等粗细
"semibold": "600", // 半粗体
"bold": "700" // 粗体
}
}
3.5 间距配置
"spacing": {
"xs": "4px", // 极小间距
"sm": "8px", // 小间距
"md": "16px", // 中等间距
"lg": "24px", // 大间距
"xl": "32px", // 超大间距
"2xl": "48px" // 2倍大间距
}
3.6 圆角配置
"border_radius": {
"sm": "4px", // 小圆角
"md": "8px", // 中等圆角
"lg": "12px", // 大圆角
"xl": "16px", // 超大圆角
"full": "50%" // 完全圆角
}
3.7 阴影配置
"shadows": {
"sm": "0 1px 2px rgba(0, 0, 0, 0.1)", // 小阴影
"md": "0 4px 6px rgba(0, 0, 0, 0.1)", // 中等阴影
"lg": "0 10px 15px rgba(0, 0, 0, 0.1)", // 大阴影
"xl": "0 20px 25px rgba(0, 0, 0, 0.1)" // 超大阴影
}
3.8 组件配置
"components": {
"button": {
"height": "44px", // 按钮高度
"min_width": "80px", // 最小宽度
"padding": "12px 24px", // 内边距
"border_radius": "8px", // 圆角
"font_weight": "500" // 字体粗细
},
"card": {
"padding": "16px", // 卡片内边距
"border_radius": "12px", // 圆角
"margin": "8px" // 外边距
},
"input": {
"height": "44px", // 输入框高度
"padding": "12px 16px", // 内边距
"border_radius": "8px", // 圆角
"border_width": "1px" // 边框宽度
}
}
4. 部署配置
4.1 Docker配置
文件路径: docker/Dockerfile
# 基础镜像
FROM python:3.10-slim
# 环境变量
ENV PYTHONPATH=/app
ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1
# 工作目录
WORKDIR /app
# 安装依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 复制代码
COPY . .
# 创建用户
RUN groupadd -r appuser && useradd -r -g appuser appuser
USER appuser
# 暴露端口
EXPOSE 8000
# 健康检查
HEALTHCHECK \
CMD curl -f http://localhost:8000/health || exit 1
# 启动命令
CMD ["python", "-m", "uvicorn", "api.main:app", "--host", "0.0.0.0", "--port", "8000"]
4.2 Docker Compose配置
文件路径: docker/docker-compose.yml
version: '3.8'
services:
ai-ui-system:
build:
context: ..
dockerfile: docker/Dockerfile
container_name: ai-ui-system
ports:
- "8000:8000"
volumes:
- ../output:/app/output
- ../models:/app/models
- ../logs:/app/logs
- ../config:/app/config
environment:
- PYTHONPATH=/app
- CUDA_VISIBLE_DEVICES=0
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
redis:
image: redis:7-alpine
container_name: ai-ui-redis
ports:
- "6379:6379"
volumes:
- redis_data:/data
restart: unless-stopped
nginx:
image: nginx:alpine
container_name: ai-ui-nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ../output:/usr/share/nginx/html/output:ro
depends_on:
- ai-ui-system
restart: unless-stopped
volumes:
redis_data:
networks:
default:
driver: bridge
4.3 Nginx配置
文件路径: docker/nginx.conf
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 4096;
use epoll;
multi_accept on;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# 日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;
# 基础配置
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# Gzip压缩
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
# 上游服务器
upstream ai_ui_backend {
server ai-ui-system:8000;
keepalive 32;
}
server {
listen 80;
server_name localhost;
# 静态文件
location /static/ {
alias /usr/share/nginx/html/output/;
expires 1y;
add_header Cache-Control "public, immutable";
}
# API请求
location / {
proxy_pass http://ai_ui_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
}
5. 环境变量
5.1 系统环境变量
| 变量名 | 默认值 | 描述 |
|---|---|---|
PYTHONPATH | /app | Python模块搜索路径 |
PYTHONUNBUFFERED | 1 | 禁用Python输出缓冲 |
PYTHONDONTWRITEBYTECODE | 1 | 禁用Python字节码文件生成 |
CUDA_VISIBLE_DEVICES | 0 | 可见的GPU设备ID |
5.2 应用环境变量
| 变量名 | 默认值 | 描述 |
|---|---|---|
AI_UI_HOST | 0.0.0.0 | API服务主机地址 |
AI_UI_PORT | 8000 | API服务端口 |
AI_UI_WORKERS | 1 | 工作进程数 |
AI_UI_LOG_LEVEL | INFO | 日志级别 |
AI_UI_MODEL_PATH | google/flan-t5-base | 模型路径 |
AI_UI_LORA_PATH | null | LoRA权重路径 |
5.3 环境变量优先级
环境变量会覆盖配置文件中的相同参数:
export AI_UI_HOST=127.0.0.1
export AI_UI_PORT=9000
export AI_UI_LOG_LEVEL=DEBUG
# 启动服务
python api/main.py
6. 配置最佳实践
6.1 开发环境配置
目标: 快速开发和调试
# model_config.yaml
model:
base_model: "google/flan-t5-small" # 使用小模型
max_length: 256 # 减少内存使用
temperature: 0.8 # 增加创造性
training:
batch_size: 2 # 小批次
num_epochs: 1 # 快速训练
fp16: true # 启用半精度
api:
host: "127.0.0.1" # 本地访问
port: 8000
workers: 1 # 单进程
logging:
level: "DEBUG" # 详细日志
6.2 测试环境配置
目标: 接近生产环境的测试
# model_config.yaml
model:
base_model: "google/flan-t5-base" # 使用基础模型
max_length: 512 # 标准长度
temperature: 0.7 # 平衡设置
training:
batch_size: 4 # 中等批次
num_epochs: 2 # 适中训练
fp16: true
api:
host: "0.0.0.0" # 允许外部访问
port: 8000
workers: 2 # 多进程
logging:
level: "INFO" # 标准日志
6.3 生产环境配置
目标: 高性能和稳定性
# model_config.yaml
model:
base_model: "google/flan-t5-base" # 使用基础模型
max_length: 512 # 标准长度
temperature: 0.7 # 稳定设置
training:
batch_size: 8 # 大批次
num_epochs: 3 # 完整训练
fp16: true
dataloader_num_workers: 8 # 多进程数据加载
api:
host: "0.0.0.0" # 允许外部访问
port: 8000
workers: 4 # 多进程
timeout: 300 # 较长超时
logging:
level: "WARNING" # 减少日志量
file: "/var/log/ai-ui-system.log" # 文件日志
6.4 安全配置建议
API密钥认证:
export AI_UI_API_KEY="your-secure-api-key"HTTPS配置:
server { listen 443 ssl; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; # ... 其他配置 }防火墙配置:
# 只允许必要端口 ufw allow 80 ufw allow 443 ufw deny 8000 # 禁止直接访问API端口资源限制:
# docker-compose.yml services: ai-ui-system: deploy: resources: limits: memory: 8G cpus: '4.0'
6.5 性能优化配置
GPU优化:
training: fp16: true dataloader_num_workers: 8 model: max_length: 512 # 根据GPU内存调整API优化:
api: workers: 4 # 设为CPU核心数 timeout: 300 # nginx.conf worker_processes auto; worker_connections 4096;缓存配置:
# 启用Redis缓存 redis: image: redis:7-alpine command: redis-server --maxmemory 1gb --maxmemory-policy allkeys-lru
通过以上配置参数说明,开发者可以根据具体需求灵活配置AI UI生成系统,实现最佳的性能和稳定性。