当前位置: 首页 > news >正文

企业级大模型微调指南:数据准备、参数调优与部署优化全流程

企业级大模型微调指南:数据准备、参数调优与部署优化全流程

在大模型技术爆发的今天,通用大模型(如GPT-4、Llama 3、文心一言)在通用场景展现出强大能力,但在企业特定领域(如金融风控、医疗诊断、工业质检)的精度和适配性仍有不足。企业级大模型微调——通过在企业专属数据上调整模型参数,使其适配业务场景——成为释放大模型价值的核心路径。某金融机构通过微调大模型,将信贷审批报告生成准确率从65%提升至92%;某制造企业微调后的设备故障诊断模型,识别精度提升40%,停机时间减少30%。

本文将系统拆解企业级大模型微调的全流程,从数据准备的“脏活累活”到参数调优的技术细节,再到部署优化的工程实践,提供可落地的操作指南。无论你是技术团队负责人还是一线算法工程师,都能从中获取微调项目的关键节点、避坑指南和最佳实践。

一、数据准备:微调的“地基工程”

数据是大模型微调的“燃料”,其质量直接决定微调效果。企业级微调的数据准备绝非简单的“数据堆砌”,而是需要结合业务场景进行清洗、标注和结构化,最终形成高质量的训练数据集。

1. 数据来源:明确“喂什么”给模型

企业级微调的数据来源需聚焦业务场景,核心原则是“相关、权威、足量”:

  • 内部业务数据:最核心的训练素材,包括历史对话记录(如客服聊天日志)、专业文档(如产品手册、合规指南)、业务交互数据(如工单处理记录、审批流程文本)。例如,金融企业可使用信贷审批案例、风险评级报告;制造企业可使用设备故障记录、维修手册。
  • 公开领域数据:补充行业通用知识,如行业法规(如金融领域的《商业银行法》、医疗领域的《病历书写规范》)、行业标准(如工业制造的ISO标准、软件行业的CMMI规范)、公开案例(如裁判文书网的金融纠纷案例、医学期刊的病例报告)。
  • 人工构造数据:针对稀缺场景补充数据,通过“prompt-响应”模式生成结构化样本。例如,为训练合同审查模型,可人工构造“合同条款-风险标签”对;为优化客服模型,可设计“用户问题-标准回答”样本。

数据规模建议

  • 轻量级微调(如LoRA):至少1000-5000条高质量样本;
  • 全参数微调:建议1万-10万条样本,覆盖多场景、多子任务;
  • 行业大模型:需10万+样本,且包含复杂场景案例(如边缘案例、罕见问题)。

2. 数据清洗:从“原始数据”到“干净数据”

企业原始数据往往存在噪声、冗余和错误,需通过系统化清洗提升质量。核心步骤包括:

(1)去重与去噪
  • 重复数据处理:去除完全重复或高度相似的样本(如重复的客服问答、复制粘贴的文档段落)。可通过文本哈希、余弦相似度计算识别重复内容,例如用Python代码去重:
    import hashlib
    from collections import defaultdictdef deduplicate_texts(texts, threshold=0.95):"""去除重复或高度相似文本"""text_hashes = {}unique_texts = []for text in texts:# 简单哈希去重(完全重复)text_hash = hashlib.md5(text.encode()).hexdigest()if text_hash not in text_hashes:text_hashes[text_hash] = Trueunique_texts.append(text)return unique_texts
    
  • 噪声数据过滤:剔除无意义内容(如乱码、特殊符号堆砌)、低质量文本(如字数过少的句子、逻辑混乱的段落)、敏感信息(如身份证号、银行卡号)。可通过规则判断(如“文本长度<50字符的样本过滤”)和正则匹配(如手机号、邮箱脱敏)实现。
(2)格式统一与结构化
  • 格式标准化:将不同来源的数据统一为模型可接受的格式,例如对话数据统一为[{"role": "user", "content": "问题"}, {"role": "assistant", "content": "回答"}];文档数据统一为“标题+段落+关键词”结构。
  • 结构化处理:对非结构化数据(如PDF文档、图片中的文本)进行解析,提取关键信息。例如,用OCR工具提取合同扫描件中的条款文本,用PDF解析库提取财报中的表格数据:
    import PyPDF2def extract_text_from_pdf(pdf_path):"""从PDF中提取文本内容"""text = ""with open(pdf_path, "rb") as f:reader = PyPDF2.PdfReader(f)for page in reader.pages:page_text = page.extract_text()if page_text:text += page_text + "\n"return text.strip()
    
(3)质量评估与筛选

通过人工抽样和自动化指标评估数据质量,保留“高相关性、高准确性、高多样性”的样本:

  • 相关性:样本是否与目标任务强相关(如训练“保险理赔问答”模型,优先保留理赔相关的对话);
  • 准确性:专业领域数据需确保内容正确(如法律条款解读、医疗诊断建议需经专业人员校验);
  • 多样性:覆盖不同场景、不同难度、不同表达方式的样本(如客服问题需包含咨询、投诉、建议等多种类型)。

工具推荐:开源工具Deduplicate用于去重,LangDetect用于语言过滤,TextCleaner用于文本标准化。

3. 数据标注:给模型“正确答案”

对于有监督微调(SFT),需为数据标注“输入-输出”映射关系或标签,指导模型学习业务逻辑。

  • 标注类型
    • 生成任务标注:如“用户问题→标准答案”(客服问答)、“需求描述→代码片段”(代码生成)、“原始文本→摘要”(文档摘要);
    • 分类任务标注:如“邮件内容→垃圾邮件/正常邮件”(垃圾邮件识别)、“合同条款→高风险/中风险/低风险”(合同审查);
    • 抽取任务标注:如“从病历中抽取疾病名称、用药方案”(医疗信息抽取)。
  • 标注流程
    1. 制定标注规范:明确标注标准(如“高风险合同条款”的定义)、示例和注意事项;
    2. 小范围试点标注:2-3名标注员标注相同样本,计算一致性(如Cohen’s Kappa系数),低于0.8需优化规范;
    3. 大规模标注:结合人工标注和工具辅助(如用大模型预标注后人工校验);
    4. 质量抽检:按10%-20%比例抽检,修正错误标注。

标注工具推荐:轻量场景用Label Studio,大规模标注用Amazon SageMaker Ground Truth,代码相关标注用CodeXGLUE

4. 数据划分:构建“训练-验证-测试”闭环

将清洗标注后的数据集划分为三个子集,确保微调过程可监控、效果可评估:

  • 训练集(Train Set):占比70%-80%,用于模型参数更新,需覆盖主要场景和常见案例;
  • 验证集(Validation Set):占比10%-15%,用于微调过程中的超参数调整和早停判断,需与训练集分布一致;
  • 测试集(Test Set):占比10%-15%,用于最终效果评估,需包含典型场景和边缘案例,标注需严格校验。

划分原则

  • 避免数据泄露:确保三个子集无重叠样本,验证集和测试集不参与模型训练;
  • 分层抽样:按场景、难度、类型等维度分层划分,确保各子集分布一致(如“高风险合同条款”在训练/验证/测试集中的占比相近);
  • 保留真实场景:测试集需尽可能模拟真实业务场景,避免“只在干净数据上表现好,实际用不了”。

5. 数据安全与合规:企业级微调的“红线”

企业数据往往包含商业秘密和敏感信息,数据准备阶段需严格遵守合规要求:

  • 隐私保护:对个人信息(如姓名、身份证号)和商业敏感信息(如核心技术参数、客户名单)进行脱敏处理,可采用替换(如“张三→用户A”)、掩码(如“138****5678”)、加密(如联邦学习中的数据加密)等方式;
  • 数据授权:确保数据来源合法,内部数据需经数据所有权部门授权,外部数据需确认版权归属,避免侵权风险;
  • 合规审查:金融、医疗等强监管行业需符合行业法规(如金融的《个人信息保护法》、医疗的《健康医疗数据管理办法》),必要时通过第三方合规审计。

二、参数调优:让模型“学透”业务知识

参数调优是微调的核心环节,通过调整模型参数和训练策略,使模型在企业数据上“精准拟合”业务逻辑。企业级微调需平衡效果、效率和成本,选择合适的微调策略和参数配置。

1. 微调策略选择:全参数vs高效微调

企业需根据模型规模、数据量和计算资源选择微调策略:

(1)全参数微调(Full Fine-tuning)
  • 原理:调整模型所有参数,使模型从通用知识迁移到特定领域,适合数据量充足(10万+样本)、追求极致效果的场景。
  • 优势:模型拟合效果好,能深度学习业务细节;
  • 劣势:计算成本高(微调千亿参数模型需多卡GPU集群),训练周期长(数天至数周),易过拟合(数据量不足时)。
  • 适用场景:大型企业的核心业务模型(如银行的风控模型、医疗机构的诊断模型),且具备充足数据和算力。
(2)参数高效微调(Parameter-Efficient Fine-tuning, PEFT)
  • 原理:仅调整模型的少量参数(如新增适配器层、冻结大部分预训练参数),在保证效果的同时降低计算成本,适合中小数据量(1万-10万样本)场景。
  • 主流方法
    • LoRA(Low-Rank Adaptation):在Transformer层注入低秩矩阵,仅训练低秩参数(约占原模型参数的0.1%-1%),效果接近全参数微调;
    • Prefix Tuning:在输入序列前添加可训练的前缀向量,引导模型生成特定领域内容,适合生成任务;
    • Adapter Tuning:在Transformer层之间插入小型适配器模块,仅训练适配器参数,兼容性强。
  • 优势:计算成本低(单卡GPU可微调70亿参数模型),训练快(小时级),不易过拟合;
  • 劣势:极端场景下效果略逊于全参数微调;
  • 适用场景:中小企业微调、快速验证场景、大模型(如100亿+参数)微调,是企业级微调的首选策略。

策略对比表

微调策略参数调整量计算成本效果(数据充足)适用数据量典型场景
全参数微调100%10万+核心业务、大模型
LoRA0.1%-1%良-优1万-10万中小企业、快速迭代
Prefix Tuning<1%中-良5000+生成任务、特定格式输出

2. 核心超参数调优:让训练“走对路”

无论选择哪种微调策略,超参数配置直接影响训练效果,需重点关注以下核心参数:

(1)学习率(Learning Rate)
  • 作用:控制参数更新幅度,决定模型学习速度和收敛效果。
  • 配置建议
    • 全参数微调:较小学习率(如2e-5至5e-5),避免破坏预训练知识;
    • LoRA微调:较大学习率(如1e-4至5e-4),适配器参数需要更快更新;
    • 调整方法:采用学习率搜索(如从1e-5到1e-3尝试),观察验证集损失,选择损失下降最快的学习率。
(2)训练轮次(Epochs)
  • 作用:数据集中的样本被模型学习的次数,过少欠拟合,过多过拟合。
  • 配置建议
    • 小数据集(<1万样本):3-5 epochs;
    • 中等数据集(1万-10万样本):2-3 epochs;
    • 大数据集(>10万样本):1-2 epochs;
    • 早停策略:监控验证集损失,当连续3个epoch损失不再下降时停止训练,避免过拟合。
(3)批次大小(Batch Size)
  • 作用:每次参数更新使用的样本数量,影响训练稳定性和效率。
  • 配置建议
    • 受限于GPU内存,尽可能设置较大批次(如16、32),内存不足时可使用梯度累积(Gradient Accumulation);
    • 小批次(如8)训练更灵活,但收敛波动大;
    • 大批量(如64)训练更稳定,但可能陷入局部最优。
(4)权重衰减(Weight Decay)
  • 作用:正则化手段,通过对参数施加惩罚防止过拟合。
  • 配置建议
    • 推荐值:0.01-0.1,全参数微调需更大权重衰减(如0.1);
    • 过拟合严重时增大权重衰减,欠拟合时减小或设为0。

典型配置示例(LoRA微调Llama 3 7B模型)

# 使用Hugging Face PEFT库配置LoRA
from peft import LoraConfig, get_peft_modellora_config = LoraConfig(r=8,  # 低秩矩阵维度,4-32,越大效果越好但成本越高lora_alpha=32,  # 缩放因子,通常为r的2-4倍target_modules=["q_proj", "v_proj"],  # 目标微调模块(Transformer注意力层)lora_dropout=0.05,  # Dropout概率,防止过拟合bias="none",  # 不微调偏置参数task_type="CAUSAL_LM"  # 因果语言模型任务
)# 训练参数配置
training_args = TrainingArguments(output_dir="./lora_results",per_device_train_batch_size=16,learning_rate=2e-4,num_train_epochs=3,logging_steps=10,evaluation_strategy="epoch",  # 每轮验证一次save_strategy="epoch",load_best_model_at_end=True,  # 保存验证集效果最好的模型weight_decay=0.05,
)

3. 训练过程监控:及时发现“跑偏”问题

微调过程中需实时监控关键指标,避免无效训练:

  • 损失曲线(Loss Curve)
    • 训练损失和验证损失持续下降且趋于稳定,说明训练正常;
    • 训练损失低但验证损失高,说明过拟合(需减小epochs、增大权重衰减);
    • 训练损失和验证损失均高,说明欠拟合(需增加数据、调大学习率)。
  • 评估指标
    • 生成任务:BLEU(文本生成)、ROUGE(摘要)、人工评估(相关性、流畅度);
    • 分类任务:准确率(Accuracy)、F1分数、混淆矩阵;
    • 抽取任务:精确率(Precision)、召回率(Recall)。
  • 样本输出检查:定期查看模型在验证集上的输出,直观判断是否学到业务知识(如客服模型是否正确回答行业术语问题)。

工具推荐:用TensorBoardWeights & Biases可视化损失曲线,用Hugging Face Evaluate库计算评估指标。

4. 过拟合防治:让模型“学通用”而非“记答案”

企业数据量有限时,模型易过拟合(记住训练数据但泛化差),需通过多重手段防治:

  • 数据增强:对文本数据进行同义替换、句式变换、噪声注入等增强,扩大数据多样性。例如,用同义词替换生成相似样本:
    from textattack.transformations import WordSwapRandomSynonymdef augment_text(text):"""文本增强:随机替换同义词"""transformation = WordSwapRandomSynonym()augmented_texts = [text]  # 保留原始文本for _ in range(2):  # 生成2个增强样本augmented = transformation.transform(text, 0)[0]  # 替换1个词augmented_texts.append(augmented)return augmented_texts
    
  • 正则化技术:除权重衰减外,可使用Dropout(随机失活神经元)、早停等技术;
  • 模型选择:数据量少时优先选择小模型(如7B参数模型),或使用更保守的微调策略(如LoRA的r值设小);
  • 多样性数据:增加边缘案例、反例样本(如“错误回答”样本标注为负面),提升模型鲁棒性。

三、部署优化:让模型“好用”又“省钱”

企业级大模型微调的最终目标是落地业务场景,部署阶段需解决性能、成本、稳定性三大问题,确保模型“可用、高效、经济”。

1. 模型压缩:减小体积,提升速度

大模型(如7B/13B参数)体积大(单模型10GB+)、推理慢,需通过压缩技术优化:

  • 量化(Quantization)

    • 原理:将模型参数从32位浮点数(FP32)压缩为16位(FP16)、8位(INT8)甚至4位(INT4),减少内存占用和计算量;
    • 推荐方案:
      • 追求精度:FP16量化(精度损失<1%,体积减少50%);
      • 平衡精度与速度:INT8量化(精度损失3%-5%,体积减少75%,速度提升2-3倍);
      • 极致压缩:INT4量化(适合资源受限场景,需配合量化感知训练补偿精度);
    • 工具:GPTQ(4位量化)、AWQ(激活感知量化)、Hugging Face Transformers内置量化工具。
  • 剪枝(Pruning)

    • 原理:移除模型中不重要的参数(如权重接近0的神经元),保留核心结构;
    • 适用场景:全参数微调后的模型,需结合灵敏度分析识别冗余参数;
    • 注意:剪枝可能导致精度损失,需在压缩率和精度间平衡。

压缩效果对比(Llama 3 7B模型)

压缩方式模型体积推理速度提升精度损失适用场景
FP32(原始)28GB1x0%高精度要求,资源充足
FP1614GB1.5x<1%平衡精度与效率
INT87GB2-3x3%-5%企业级部署首选
INT43.5GB4-5x5%-8%边缘设备、低资源场景

2. 推理优化:让模型“跑得快”

推理速度直接影响用户体验,需通过工程优化提升响应效率:

  • 推理引擎加速

    • 使用优化的推理引擎替代原生PyTorch推理,如TensorRT(NVIDIA GPU)、ONNX Runtime(跨平台)、vLLM(高吞吐量);
    • vLLM通过PagedAttention技术优化内存使用,吞吐量比原生Transformers提升10-20倍,支持动态批处理(Dynamic Batching)。
    • 部署示例(vLLM):
      # 启动vLLM推理服务,支持动态批处理
      python -m vllm.entrypoints.api_server \--model ./fine-tuned-lora-model \--quantization int8 \--port 8000 \--max-num-batched-tokens 4096 \  # 最大批处理 tokens--max-num-seqs 64  # 最大并发序列数
      
  • 批处理优化

    • 对多个请求进行批处理(Batching),减少GPU空闲时间,提升吞吐量;
    • 动态批处理(如vLLM支持)可根据请求长度动态调整批次,比静态批处理更高效。
  • 模型并行与分布式推理

    • 大模型(如30B+参数)单卡放不下时,采用模型并行(将模型层分布到多卡);
    • 高并发场景采用多实例部署+负载均衡,如用Kubernetes管理多个推理实例。

3. 部署架构:适配企业IT环境

企业级部署需结合IT架构选择合适的部署模式,确保稳定性和可扩展性:

  • 云端部署

    • 适用场景:中大型企业、高并发需求,可使用云厂商的GPU实例(如AWS G5、阿里云GPU实例);
    • 优势:弹性扩展(按需增减GPU资源)、运维简单(云厂商负责基础设施);
    • 工具:AWS SageMaker、阿里云PAI、腾讯云TI-ONE。
  • 私有化部署

    • 适用场景:金融、政务等对数据隐私要求高的行业,需部署在企业内网;
    • 架构:GPU服务器集群+负载均衡+缓存层(如Redis缓存热门请求);
    • 注意:需考虑机房散热、电力供应(GPU功耗高)、运维团队建设。
  • 边缘部署

    • 适用场景:工业质检、现场客服等需低延迟的边缘场景;
    • 方案:使用轻量化模型(如量化后的7B模型)+边缘计算设备(如NVIDIA Jetson AGX)。
  • 混合部署

    • 核心思路:通用请求走云端公共模型,敏感请求走私有化部署,平衡成本与隐私;
    • 典型架构:API网关(请求路由)+ 云端推理集群 + 私有化推理集群。

4. 监控与迭代:让模型“持续好用”

大模型部署后并非一劳永逸,需建立监控与迭代机制,应对数据漂移和业务变化:

  • 性能监控

    • 实时监控推理延迟(P95/P99响应时间)、吞吐量(每秒处理请求数)、错误率(如5xx错误);
    • 设置告警阈值(如延迟>500ms告警),及时发现异常。
  • 效果监控

    • 收集用户反馈(如“回答不准确”标记)和业务指标(如客服问题解决率);
    • 定期用测试集评估模型精度,当精度下降超过10%时触发模型更新。
  • 数据反馈闭环

    • 将生产环境的真实数据(经脱敏)加入训练集,形成“部署-反馈-微调”的迭代闭环;
    • 对高频错误场景(如特定类型的问题回答错误)进行专项数据补充和微调。
  • 版本管理

    • 用模型仓库(如Hugging Face Hub、MLflow)管理不同版本模型;
    • 新模型上线前通过A/B测试与旧模型对比,验证效果后再全量切换。

工具推荐:监控用Prometheus + Grafana,模型版本管理用MLflow,A/B测试用Evidently AI

四、企业级微调避坑指南:从失败案例学经验

企业级大模型微调过程中,常见的“坑”往往导致项目延期或效果不达预期,需提前规避:

1. 数据“量够质差”:宁可少而精,不要多而杂

某零售企业用10万条爬虫抓取的低质量商品描述微调模型,效果远不如用1万条人工校验的高质量样本。教训:数据质量优先于数量,花80%精力清洗标注核心数据,比堆砌低质量数据更有效。

2. 盲目追求大模型:小模型可能更“香”

某中小企业强行微调30B参数模型,因GPU资源不足训练中断多次,最终用7B模型+LoRA微调达到业务要求。教训:根据数据量和算力选择模型,7B/13B参数模型在企业场景中性价比更高。

3. 忽视过拟合:“训练好”不等于“用得好”

某金融机构微调模型在测试集上准确率达95%,但上线后因过拟合训练数据,对新场景问题准确率骤降至60%。教训:测试集需包含未见过的真实场景数据,严格监控过拟合指标,必要时牺牲部分训练精度换取泛化能力。

4. 部署“一步到位”幻想:从小场景验证开始

某制造企业直接将微调模型部署到核心生产线,因推理延迟过高导致生产中断。教训:先在非核心场景(如内部质检辅助)验证模型性能,优化稳定后再逐步推广到核心业务。

5. 缺乏业务协同:技术与业务“两张皮”

某律所微调的合同审查模型因未结合律师实际工作流程,生成的风险报告格式不符合需求,最终被弃用。教训:全程邀请业务人员参与,确保模型输出格式、交互方式适配业务流程,而非仅追求技术指标。

五、未来趋势:企业级微调的演进方向

随着大模型技术成熟,企业级微调将向更高效、更安全、更易用的方向发展:

  • 联邦微调:多企业在数据不共享的情况下联合微调,解决数据孤岛问题,尤其适合医疗、金融等数据敏感行业;
  • 持续微调:结合在线学习技术,模型可实时吸收新数据(如每日业务日志),无需定期全量微调;
  • 自动化微调平台:低代码工具降低微调门槛,业务人员通过可视化界面完成数据准备、参数配置和部署,无需深入算法细节;
  • 多模态微调:从纯文本微调扩展到图文、音视频等多模态数据,适配更丰富的企业场景(如工业质检的图像+文本融合模型)。

结语:微调的本质是“让大模型懂业务”

企业级大模型微调的核心目标不是“训练一个更强大的通用模型”,而是“让模型理解企业的业务逻辑、行业术语和工作流程”。从数据准备的“千淘万漉”到参数调优的“精雕细琢”,再到部署优化的“落地生根”,每个环节都需要技术与业务的深度融合。

对于企业而言,微调不是一次性项目,而是“数据积累→模型优化→业务反馈→数据更新”的持续迭代过程。初期可通过轻量化策略(如LoRA微调小模型)快速验证价值,再逐步投入资源深化优化。记住:最好的企业级大模型不是参数最大的,而是最懂业务、最能解决实际问题的。

随着工具链成熟和成本降低,大模型微调将从“大型企业专属”变为“中小企业可用”的普惠技术,成为企业数字化转型的核心驱动力。掌握微调能力的企业,将在智能化竞争中占据先机,让大模型真正成为业务增长的“加速器”。

http://www.dtcms.com/a/337460.html

相关文章:

  • 从0-1使用Fastmcp开发一个MCP服务,并部署到阿里云百炼 -持续更新中
  • 大数据服务完全分布式部署- 其他组件(阿里云版)
  • 数字隔离器,变频器安全运行的 “隐形引擎”
  • 深入对比:Chromium的base::RefCounted与std::shared_ptr——从线程安全到性能优化
  • 宏观认识 Unitree LiDAR L1 及其在自动驾驶中的应用
  • Avalonia实例实战七:动画
  • win环境断电强制拉库报ORA-600 kcbzib_kcrsds_1故障处理---惜分飞
  • 数据库:表和索引结构
  • 【datawhale组队学习】n8n TASK01
  • 知识蒸馏 Jensen-Shannon散度
  • 为什么品牌更愿意为新品打广告?
  • 机器学习——XGBoost算法
  • 力扣2道dp
  • easyexcel fastexcel 官方文档 easyexcel合并单元格
  • 项目会议怎么开才有效
  • 【前端面试题】JavaScript 核心知识点解析(第十四题解析到第二十二题)
  • 【Mac】【Minecraft】关于如何在Mac上搭建基岩版MC服务器的方法
  • 前端Element-plus的选择器 el-select 清空内容时,后端对应的更新方式,支持更新为null
  • 【秋招笔试】2025.08.09网易秋招机考
  • openEuler系统备份与恢复方法
  • 【DL学习笔记】交叉熵损失函数详解
  • 无人机视角违章建筑识别分割数据集labelme格式343张2类别
  • AI测试自愈率80%!语音编程提效10倍——2025软件AI化爆炸级突破
  • 端面试题大汇总二
  • 分库分表数据源如何清洗同步到目标表
  • 大数据计算引擎(二)——Flink
  • 大数据计算引擎(四)—— Impala
  • 【matlab】考虑源荷不平衡的微电网鲁棒定价研究
  • Pandas 数据导入导出、索引、分组聚合与可视化
  • (第十八期)图像标签的三个常用属性:width、height、border