LLM训练智能客服实战:从数据准备到生产部署的AI辅助开发指南

核心内容摘要

Clawdbot惊艳效果:Qwen3:32B在金融风控场景中实现交易异常检测Agent闭环
AcousticSense AI效果集锦:16流派梅尔频谱图库+ViT特征热力图双模展示

大模型如何 “练成”?详解训练、微调与强化学习的基础逻辑【收藏版】

第一步准备数据印章分割-深度学习图像分割数据集印章分割数据可直接应用到一些常用深度学习分割算法中比如FCN、Unet、SegNet、DeepLabV

DeepLabV

DeepLabV

DeepLabV

PSPNet、RefineNet、HRnet、Mask R-CNN、Segformer、DUCK-Net模型等数据集总共有2000对图片数据质量非常高甚至可应用到工业落地的项目中第二步搭建模型本文选择EGEUNet其网络结构分别如下第三步训练代码1损失函数为dice_loss focal_loss2网络代码class EGEUNet(nn.Module): def __init__(self, num_classes1, input_channels3, c_list[8, 16, 24, 32, 48, 64], bridgeTrue, gt_dsFalse): super().__init__() self.bridge bridge self.gt_ds gt_ds self.encoder1 nn.Sequential( nn.Conv2d(input_channels, c_list[0], 3, stride1, padding

, ) self.encoder2 nn.Sequential( nn.Conv2d(c_list[0], c_list[1], 3, stride1, padding

, ) self.encoder3 nn.Sequential( nn.Conv2d(c_list[1], c_list[2], 3, stride1, padding

, ) self.encoder4 nn.Sequential( Grouped_multi_axis_Hadamard_Product_Attention(c_list[2], c_list[3]), ) self.encoder5 nn.Sequential( Grouped_multi_axis_Hadamard_Product_Attention(c_list[3], c_list[4]), ) self.encoder6 nn.Sequential( Grouped_multi_axis_Hadamard_Product_Attention(c_list[4], c_list[5]), ) if bridge: self.GAB1 group_aggregation_bridge(c_list[1], c_list[0]) self.GAB2 group_aggregation_bridge(c_list[2], c_list[1]) self.GAB3 group_aggregation_bridge(c_list[3], c_list[2]) self.GAB4 group_aggregation_bridge(c_list[4], c_list[3]) self.GAB5 group_aggregation_bridge(c_list[5], c_list[4]) print(group_aggregation_bridge was used) if gt_ds: self.gt_conv1 nn.Sequential(nn.Conv2d(c_list[4], 1,

) self.gt_conv2 nn.Sequential(nn.Conv2d(c_list[3], 1,

) self.gt_conv3 nn.Sequential(nn.Conv2d(c_list[2], 1,

) self.gt_conv4 nn.Sequential(nn.Conv2d(c_list[1], 1,

) self.gt_conv5 nn.Sequential(nn.Conv2d(c_list[0], 1,

) print(gt deep supervision was used) self.decoder1 nn.Sequential( Grouped_multi_axis_Hadamard_Product_Attention(c_list[5], c_list[4]), ) self.decoder2 nn.Sequential( Grouped_multi_axis_Hadamard_Product_Attention(c_list[4], c_list[3]), ) self.decoder3 nn.Sequential( Grouped_multi_axis_Hadamard_Product_Attention(c_list[3], c_list[2]), ) self.decoder4 nn.Sequential( nn.Conv2d(c_list[2], c_list[1], 3, stride1, padding

, ) self.decoder5 nn.Sequential( nn.Conv2d(c_list[1], c_list[0], 3, stride1, padding

, ) self.ebn1 nn.GroupNorm(4, c_list[0]) self.ebn2 nn.GroupNorm(4, c_list[1]) self.ebn3 nn.GroupNorm(4, c_list[2]) self.ebn4 nn.GroupNorm(4, c_list[3]) self.ebn5 nn.GroupNorm(4, c_list[4]) self.dbn1 nn.GroupNorm(4, c_list[4]) self.dbn2 nn.GroupNorm(4, c_list[3]) self.dbn3 nn.GroupNorm(4, c_list[2]) self.dbn4 nn.GroupNorm(4, c_list[1]) self.dbn5 nn.GroupNorm(4, c_list[0]) self.final nn.Conv2d(c_list[0], num_classes, kernel_size

self.apply(self._init_weights) def _init_weights(self, m): if isinstance(m, nn.Linear): trunc_normal_(m.weight, std.

if isinstance(m, nn.Linear) and m.bias is not None: nn.init.constant_(m.bias,

elif isinstance(m, nn.Conv1d): n m.kernel_size[0] * m.out_channels m.weight.data.normal_(0, math.sqrt(

/ n)) elif isinstance(m, nn.Conv2d): fan_out m.kernel_size[0] * m.kernel_size[1] * m.out_channels fan_out // m.groups m.weight.data.normal_(0, math.sqrt(

0 / fan_out)) if m.bias is not None: m.bias.data.zero_() def forward(self, x): out F.gelu(F.max_pool2d(self.ebn1(self.encoder1(x)), 2,

) t1 out # b, c0, H/2, W/2 out F.gelu(F.max_pool2d(self.ebn2(self.encoder2(out)), 2,

) t2 out # b, c1, H/4, W/4 out F.gelu(F.max_pool2d(self.ebn3(self.encoder3(out)), 2,

) t3 out # b, c2, H/8, W/8 out F.gelu(F.max_pool2d(self.ebn4(self.encoder4(out)), 2,

) t4 out # b, c3, H/16, W/16 out F.gelu(F.max_pool2d(self.ebn5(self.encoder5(out)), 2,

) t5 out # b, c4, H/32, W/32 out F.gelu(self.encoder6(out)) # b, c5, H/32, W/32 t6 out out5 F.gelu(self.dbn1(self.decoder1(out))) # b, c4, H/32, W/32 if self.gt_ds: gt_pre5 self.gt_conv1(out

t5 self.GAB5(t6, t5, gt_pre

gt_pre5 F.interpolate(gt_pre5, scale_factor32, modebilinear, align_cornersTrue) else: t5 self.GAB5(t6, t

out5 torch.add(out5, t

# b, c4, H/32, W/32 out4 F.gelu(F.interpolate(self.dbn2(self.decoder2(out

), scale_factor(2,

, modebilinear, align_cornersTrue)) # b, c3, H/16, W/16 if self.gt_ds: gt_pre4 self.gt_conv2(out

t4 self.GAB4(t5, t4, gt_pre

gt_pre4 F.interpolate(gt_pre4, scale_factor16, modebilinear, align_cornersTrue) else: t4 self.GAB4(t5, t

out4 torch.add(out4, t

# b, c3, H/16, W/16 out3 F.gelu(F.interpolate(self.dbn3(self.decoder3(out

), scale_factor(2,

, modebilinear, align_cornersTrue)) # b, c2, H/8, W/8 if self.gt_ds: gt_pre3 self.gt_conv3(out

t3 self.GAB3(t4, t3, gt_pre

gt_pre3 F.interpolate(gt_pre3, scale_factor8, modebilinear, align_cornersTrue) else: t3 self.GAB3(t4, t

out3 torch.add(out3, t

# b, c2, H/8, W/8 out2 F.gelu(F.interpolate(self.dbn4(self.decoder4(out

), scale_factor(2,

, modebilinear, align_cornersTrue)) # b, c1, H/4, W/4 if self.gt_ds: gt_pre2 self.gt_conv4(out

t2 self.GAB2(t3, t2, gt_pre

gt_pre2 F.interpolate(gt_pre2, scale_factor4, modebilinear, align_cornersTrue) else: t2 self.GAB2(t3, t

out2 torch.add(out2, t

# b, c1, H/4, W/4 out1 F.gelu(F.interpolate(self.dbn5(self.decoder5(out

), scale_factor(2,

, modebilinear, align_cornersTrue)) # b, c0, H/2, W/2 if self.gt_ds: gt_pre1 self.gt_conv5(out

t1 self.GAB1(t2, t1, gt_pre

gt_pre1 F.interpolate(gt_pre1, scale_factor2, modebilinear, align_cornersTrue) else: t1 self.GAB1(t2, t

out1 torch.add(out1, t

# b, c0, H/2, W/2 out0 F.interpolate(self.final(out

, scale_factor(2,

, modebilinear, align_cornersTrue) # b, num_class, H, W if self.gt_ds: return (torch.sigmoid(gt_pre

, torch.sigmoid(gt_pre

, torch.sigmoid(gt_pre

, torch.sigmoid(gt_pre

, torch.sigmoid(gt_pre

), torch.sigmoid(out

else: return torch.sigmoid(out

第四步统计一些指标训练过程中的loss和miou第五步推理预测代码第六步整个工程的内容项目完整文件下载请见演示与介绍视频的简介处给出➷➷➷https://www.bilibili.com/video/BV1Qpz4BfECo/​

姐弟合欢-姐弟合欢应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123