好的,我们正式开启对Naf_VFLTraining服务的深度探索。

深度解析 3GPP TS 29.530:5.2 Naf_VFLTraining Service (垂直联邦学习训练服务)

本文技术原理深度参考了 3GPP TS 29.530 V1.0.0 (2025-09) Release 19 规范,我们将聚焦于第5.2章,对 Naf_VFLTraining 服务进行全面而深入的拆解。本章定义了当AF作为VFL客户端时,如何响应和参与由NF服务消费者发起的模型训练任务。

欢迎回到“天穹智脑”的开发日志。在完成了对规范的整体蓝图和API清单的梳理后,首席架构师Dr. Evelyn Reed将第一个核心任务交给了Team Alpha:“我们的第一个挑战,就是教会‘天穹智脑’如何成为一个优秀的‘合作者’。Naf_VFLTraining服务,就是它学会协同工作、参与联邦大家庭的第一课。我们要实现的,不仅仅是一个API,而是一种开放与协作的能力。”

今天,我们将跟随Team Alpha的脚步,深入5.2章的每一个角落,通过一个生动的城市场景,来理解“天穹智脑”是如何被邀请、参与、并最终完成一项复杂的垂直联邦学习(VFL)训练任务的。


1. 5.2.1 Service Description - 服务的核心使命

在深入具体的操作流程之前,5.2.1节首先用简洁的语言概括了Naf_VFLTraining服务的核心使命。

规范原文引用 (Clause 5.2.1 Service Description) The Naf_VFLTraining service exposed by the AF enables an NF service consumer to:

  • request the creation/update of a VFL Training Subscription; and
  • receive VFL Training related event(s) reporting.

这段描述虽然简短,但揭示了该服务的两大核心功能,也是Team Alpha需要攻克的两个主要技术点:

  1. 管理训练订阅 (Subscription Management): AF必须能够处理来自NF服务消费者(如NWDAF)的请求,这些请求用于创建或更新一个“VFL训练订阅”。这个“订阅”本质上是一份合同,规定了AF需要参与哪个训练任务、扮演什么角色、遵循什么规则。它是双方协作关系建立和变更的唯一凭证。

  2. 报告训练事件 (Event Reporting): VFL训练是一个持续的、多步骤的过程。AF不能是一个“黑盒”,它必须有能力在训练过程中,将关键的事件和状态(如训练进度、本地模型精度、错误信息等)主动报告给发起任务的NF服务消费者。这确保了整个联邦学习过程的透明和可控。

“天穹智脑”场景设定:共建“智慧城市交通大脑”

为了让这些概念活起来,我们设定一个贯穿本章的场景:

  • 项目目标: 某智慧城市希望构建一个能精准预测未来1小时内各主要路口拥堵情况的AI模型。
  • 参与方 (数据孤岛):
    • 城市交通管理局NWDAF: 拥有所有交通信号灯数据、路口摄像头捕捉的车流量数据。它是本次VFL训练的发起者和协调者,即NF服务消费者
    • “天穹智脑”AF: 拥有运营商提供的、经过匿名化处理的用户群体移动性规律数据(比如某区域人群密度变化趋势),以及大型活动(如演唱会、体育比赛)的日历信息。它是本次VFL训练的参与者,即扮演VFL客户端
    • “智行一号”车联网AF: 拥有其车队提供的实时车辆轨迹、平均车速等数据。它也是一个VFL客户端

在这个场景中,没有任何一方拥有完整的数据,但他们的用户样本(城市里的车辆和人)高度重叠。这正是垂直联邦学习大显身手的完美舞台。而Naf_VFLTraining服务,就是城市交通管理局NWDAF用来邀请和管理“天穹智脑”AF参与这个宏大项目的标准通信协议。


2. 5.2.2 Service Operations - 服务操作的详细流程

这一节是本章的精华所在,它将服务的两大核心功能分解为一系列具体的操作(Operations),并用流程图和文字详细描述了每一步的交互细节。

2.1 5.2.2.1 Introduction - 操作总览

规范首先通过Table 5.2.2.1-1为我们展示了Naf_VFLTraining服务包含的所有操作。

Service Operation NameDescriptionInitiated by
Naf_VFLTraining_SubscribeThis service operation enables the NF service consumer to request the creation/update of a VFL Training Subscription.e.g., NWDAF, NEF
Naf_VFLTraining_UnsubscribeThis service operation enables the NF service consumer to request the deletion of a VFL Training Subscription.e.g., NWDAF, NEF
Naf_VFLTraining_NotifyThis service operation enables the NF service consumer to receive VFL Training related event(s) reporting.AF

表格解读:

  • 三大核心操作: 整个服务的生命周期管理,都围绕着这三个操作展开:
    1. Subscribe (订阅): 用于创建更新协作关系。这是故事的开始。
    2. Unsubscribe (取消订阅): 用于删除协作关系。这是故事的结束。
    3. Notify (通知): 用于在协作过程中,AF向消费者异步报告进展。这是故事的核心情节。
  • 发起方 (Initiated by): 注意看,SubscribeUnsubscribe都是由NF服务消费者(如NWDAF)发起的。这再次印证了AF在此服务中的“被动”和“客户端”角色——它总是响应别人的请求。而Notify操作则是由AF主动发起的,体现了它作为参与者,有责任主动汇报工作。

现在,让我们跟随Team Alpha,逐一实现这三大操作。

2.2 5.2.2.2 Naf_VFLTraining_Subscribe - 建立与更新协作

这个服务操作是整个协作的入口。它通过一个统一的接口,同时支持了“创建新订阅”和“更新现有订阅”两种场景。

2.2.2.2.2 VFL Training Subscription Creation (创建订阅)

这是“智慧城市交通大脑”项目启动的信号枪。城市交通管理局NWDAF需要正式邀请“天穹智脑”加入。

我们首先来看规范中的流程图Figure 5.2.2.2.2-1: Procedure for VFL Training Subscription Creation。该图展示了一个简单的两步交互:

  1. NF Service Consumer AF: 发送 POST .../subscriptions 请求。
  2. AF NF Service Consumer: 响应 201 Created (成功) 或 4xx/5xx (失败)。

流程深度解析:

规范原文引用 (Clause 5.2.2.2.2, Step 1)

  1. In order to subscribe to VFL Training, the NF service consumer shall send an HTTP POST request to the AF targeting the URI of the ” VFL Training Subscriptions” collection resource, with the request body including the VflTrainingSubs data structure.
  • 动作: NF消费者(城市NWDAF)发起一个HTTP POST请求。
  • 目标 (Target URI): 请求的目标是AF暴露的一个“集合资源”,其URI通常是{apiRoot}/naf-vfl-train/v1/subscriptionsPOST到集合资源,在RESTful设计中,意味着“在这个集合中创建一个新成员”。
  • 载荷 (Request Body): 请求体中包含一个VflTrainingSubs数据结构。这可以看作是NWDAF发给“天穹智脑”的**“邀请函”**。里面详细说明了:
    • vflTrainSubs: 具体的训练任务细节,比如任务ID、模型类型(如梯度提升树)、特征对齐方式、加密算法等。
    • notifUri: 一个回调URL。NWDAF告诉“天穹智脑”:“在训练过程中,如果你有任何进展要报告,请往这个地址发Notify消息。” 这是实现异步通信的关键。
    • notifCorrId: 一个关联ID,确保后续的通知能和这个订阅请求对应起来。
    • …以及其他可选参数。

规范原文引用 (Clause 5.2.2.2.2, Step 2a) 2a. Upon success, the AF shall respond with an HTTP “201 Created” status code with the response body containing a representation of the created “Individual VFL Training Subscription” resource within the VflTrainingSubs data structure, and an HTTP “Location” header field containing the URI of the created resource.

  • 成功响应: 如果“天穹智脑”AF接受邀请(比如,验证了请求的合法性、确认自己有能力参与),它会返回:

    • 201 Created: 这是HTTP协议中表示“资源已成功创建”的标准状态码。
    • 响应体: 包含刚刚创建的这个订阅的完整信息,相当于一份“合同回执”。
    • Location: 这是至关重要的一环。AF会在HTTP响应头中,返回这个新创建订阅的唯一URI,例如:/naf-vfl-train/v1/subscriptions/sub-12345。后续所有针对这个特定订阅的操作(更新、删除),都将使用这个URI。
  • 失败响应 (Step 2b): 如果AF拒绝邀请(如参数错误、认证失败),则会返回一个标准的HTTP错误码(如400 Bad Request),并在响应体中可能包含更详细的错误原因。

场景再现:

  1. 城市交通管理局NWDAF的系统管理员点击“启动新一轮拥堵预测模型训练”按钮。
  2. 系统内部,NWDAF构建了一个VflTrainingSubs结构的JSON对象,填充了训练任务task-congestion-01的细节,并指定了回调URI https://nwdaf.gov/notifications
  3. NWDAF向https://celestial-ai-brain.com/naf-vfl-train/v1/subscriptions发送了一个POST请求。
  4. “天穹智脑”的API网关接收到请求,验证了NWDAF的身份,解析了请求体,确认可以参与该任务。
  5. “天穹智脑”在数据库中创建了一条新的订阅记录,并生成了唯一ID sub-city-traffic-99
  6. 它向NWDAF返回一个201 Created响应,响应头中Location: /naf-vfl-train/v1/subscriptions/sub-city-traffic-99,响应体中则包含了这份订阅的完整内容。
  7. 至此,协作关系正式建立!

2.2.2.2.3 VFL Training Subscription Update (更新订阅)

项目进行中,需求变更是常有的事。比如,智慧城市项目组决定引入天气数据作为新的训练特征。这时,NWDAF就需要通知“天穹智脑”和其他参与方,更新训练任务。

流程图Figure 5.2.2.2.3-1: Procedure for VFL Training Subscription Update展示了更新操作:

  1. NF Service Consumer AF: 发送 PUTPATCH .../subscriptions/{subscriptionId} 请求。
  2. AF NF Service Consumer: 响应 200 OK / 204 No Content (成功) 或 4xx/5xx (失败)。

流程深度解析:

规范原文引用 (Clause 5.2.2.2.3, Step 1)

  1. In order to request the update of an existing VFL Training Subscription, the NF service consumer shall send an HTTP PUT/PATCH request to the AF, targeting the URI of the corresponding “Individual VFL Training Subscription” resource…
  • 动作: NWDAF发起一个PUTPATCH请求。
  • 目标: 注意,这次请求的目标不再是/subscriptions集合,而是之前创建订阅时,AF在Location头中返回的那个具体订阅的URI,即/subscriptions/{subscriptionId}
  • PUT vs PATCH: 这是RESTful API设计中的一个重要区别:
    • PUT: 用于全量替换。NWDAF需要提供一个完整的、更新后的VflTrainingSubs对象。AF会用这个新对象,完全覆盖掉旧的订阅。
    • PATCH: 用于部分更新。NWDAF只需提供需要变更的字段。例如,只想增加一个新的训练参数,其他保持不变。这比PUT更高效。

规范原文引用 (Clause 5.2.2.2.3, Step 2a) 2a. Upon success, the AF shall update the targeted “Individual VFL Training Subscription” resource accordingly and respond with either:

  • an HTTP “200 OK” status code with the response body containing a representation of the updated “Individual VFL Training Subscription” resource…
  • an HTTP “204 No Content” status code.
  • 成功响应:
    • 200 OK: 表示更新成功,并且AF在响应体中返回了更新后的完整订阅内容。
    • 204 No Content: 表示更新成功,但响应体为空。这通常用于客户端已经知道更新后结果的场景,可以节省网络带宽。

场景再现:

  1. 项目组决定将实时天气(如下雨、大雾)作为一个重要特征加入模型训练。
  2. 城市NWDAF构建了一个只包含新增训练参数的JSON片段。
  3. 它向https://celestial-ai-brain.com/naf-vfl-train/v1/subscriptions/sub-city-traffic-99发送了一个PATCH请求。
  4. “天穹智脑”接收到请求,更新了sub-city-traffic-99订阅的训练参数,将天气特征处理模块加入到训练流程中。
  5. 它向NWDAF返回一个200 OK响应,响应体中是包含了天气参数的、最新的完整订阅信息,供NWDAF确认。

2.3 5.2.2.3 Naf_VFLTraining_Unsubscribe - 终止协作

天下没有不散的筵席。当模型训练成功完成,或者项目因故提前终止时,NWDAF需要通知AF,释放相关资源,终止协作。

流程图Figure 5.2.2.3.2-1: Procedure for VFL Training Subscription Deletion极为简洁:

  1. NF Service Consumer AF: 发送 DELETE .../subscriptions/{subscriptionId} 请求。
  2. AF NF Service Consumer: 响应 204 No Content (成功) 或 4xx/5xx (失败)。

流程深度解析:

规范原文引用 (Clause 5.2.2.3.2, Step 1 & 2a)

  1. In order to request the deletion of an existing VFL Training Subscription, the NF service consumer shall send an HTTP DELETE request to the AF targeting the URI of the corresponding “Individual VFL Training Subscription” resource. 2a. Upon success, the AF shall respond with an HTTP “204 No Content” status code.
  • 动作: NWDAF发起一个HTTP DELETE请求。
  • 目标: 同样是那个唯一的订阅URI /subscriptions/{subscriptionId}
  • 成功响应: 204 No Content。这是RESTful API中删除操作成功的标准响应,表示“操作已成功执行,但无内容返回”。
  • AF的行为: 收到DELETE请求后,“天穹智脑”会停止所有与sub-city-traffic-99相关的训练活动,释放计算资源,并从数据库中删除这条订阅记录。

场景再现:

  1. 经过数周的协同训练,“智慧城市交通大脑”模型V1.0成功收敛,达到了预期精度。
  2. 城市NWDAF向https://celestial-ai-brain.com/naf-vfl-train/v1/subscriptions/sub-city-traffic-99发送了一个DELETE请求。
  3. “天穹智脑”收到请求,将该任务归档,并清理了所有临时数据和计算进程。
  4. 它向NWDAF返回一个204 No Content响应。
  5. 至此,双方的这次VFL训练协作圆满结束。

2.4 5.2.2.4 Naf_VFLTraining_Notify - 异步的进展报告

这是体现异步Subscribe/Notify模式核心价值的操作。在漫长的训练过程中,AF需要主动向消费者汇报进展。

流程图Figure 5.2.2.4.2-1: Procedure for VFL Training Notification展示了一个反向的交互:

  1. AF NF Service Consumer: 发送 POST {notifUri} 请求。
  2. NF Service Consumer AF: 响应 204 No Content (成功) 或 4xx/5xx (失败)。

流程深度解析:

规范原文引用 (Clause 5.2.2.4.2, Step 1)

  1. In order to notify a previously subscribed service consumer on VFL Training report(s), the AF shall send an HTTP POST request to the NF service consumer with the request URI set to “{notifUri}”, where the “notifUri” variable is set to the value received from the NF service consumer during the creation/update of the corresponding VFL Training Subscription…
  • 动作: AF(“天穹智脑”) 主动发起一个HTTP POST请求。
  • 目标: 目标URI正是当初NWDAF在创建订阅时提供的那个回调地址notifUri
  • 载荷: 请求体中包含VflTrainingNotify数据结构,这可以看作是“天穹智脑”发给NWDAF的**“工作进展报告”**。里面可能包含:
    • notifCorrId: 订阅的关联ID,让NWDAF知道这是关于哪个任务的报告。
    • trainReports: 一个报告数组,里面可能包含当前训练的轮次(epoch)、本地模型的损失值(loss)、在验证集上的准确率等关键性能指标(KPI)。

规范原文引用 (Clause 5.2.2.4.2, Step 2a) 2a. Upon success, the NF service consumer shall respond to the AF with an HTTP “204 No Content” status code to acknowledge the reception of the notification.

  • 成功响应: NF服务消费者(NWDAF)收到通知后,只需返回一个204 No Content即可。这个响应不代表它已经处理了报告内容,仅仅是**“确认收到”**。这确保了通知机制的轻量和可靠。

场景再现:

  1. 在拥堵预测模型训练的第100轮迭代完成后,“天穹智脑”本地模型的预测精度在验证集上达到了92%。
  2. 它构建了一个VflTrainingNotify的JSON对象,填充了notifCorrIdtrainReports数组,其中包含{epoch: 100, accuracy: 0.92}
  3. 它向当初NWDAF提供的回调地址https://nwdaf.gov/notifications发送了一个POST请求。
  4. NWDAF的服务器接收到这个通知,记录下训练进展,并立即返回一个204 No Content
  5. 城市交通管理局的运维大屏上,task-congestion-01任务的进度条和性能曲线得到了实时更新。

3. 总结:一个优雅而完备的协作框架

通过对5.2章的逐节拆解,我们看到,Naf_VFLTraining服务为AF作为VFL客户端参与联邦训练,提供了一个设计得极其优雅且功能完备的协作框架。

  • 清晰的生命周期: 通过Subscribe (POST), Unsubscribe (DELETE), Update (PUT/PATCH) 三组操作,清晰地定义了订阅(即协作关系)从创建、变更到终止的全过程。
  • 高效的异步通信: Notify操作的引入,完美解决了训练任务耗时长的痛点,通过异步回调,实现了低开销、实时的状态同步。
  • 标准的RESTful实践: 整个API设计严格遵循RESTful原则,使用标准的HTTP方法、状态码和头部字段,使其易于理解、实现和集成。

Team Alpha在Dr. Reed的带领下,已经完全吃透了Naf_VFLTraining服务的技术规格。他们现在可以着手进行详细的API设计和编码工作了。他们的实现,将让“天穹智脑”真正具备“走出去”与他人协作,共同创造更大价值的能力。


4. FAQ 环节

Q1:为什么创建订阅用POST /subscriptions,而更新和删除却用PUT/PATCH/DELETE /subscriptions/{subscriptionId}

A1:这是RESTful API设计的核心原则。/subscriptions代表一个资源的“集合”。

  • POST到集合: 意为“在这个集合中创建一个新成员”。因为新成员的ID是由服务器(AF)在创建时生成的,所以客户端在请求时并不知道具体的ID,只能向集合发出创建请求。
  • PUT/PATCH/DELETE到具体成员: 这些操作都是针对一个已存在的、特定的资源。因此,必须在URI中明确指定这个资源的ID,即{subscriptionId},来告诉服务器你要操作的是哪一个订阅。这种URI结构使得API的语义非常清晰和直观。

Q2:在Naf_VFLTraining_Notify中,如果AF发送了通知,但NWDAF的服务器恰好宕机或网络不通,导致AF没有收到204 No Content,会发生什么?

A2:这是一个很好的关于可靠性的问题。3GPP TS 29.500中定义了SBI的通用可靠性机制。通常情况下,如果AF作为HTTP客户端发送POST通知后,在一定时间内没有收到响应(或收到了5xx系列的服务端错误),它会认为通知失败,并会触发重传机制。重传的策略(如重传次数、间隔时间)通常是可配置的。此外,AF和NWDAF之间的交互可以通过TLS保证传输层的安全和数据完整性。

Q3:AF作为VFL客户端,它需要知道整个联邦学习的全局视图吗?比如有多少个参与方?

A3:不需要。这是联邦学习架构的优点之一。作为VFL客户端,AF(“天穹智脑”)只需要与VFL训练的协调者(在我们的场景中是城市NWDAF)进行通信。它接收来自协调者的训练指令(通过Subscribe),并向协调者汇报本地的进展(通过Notify)。AF无需知道还有哪些其他的参与方(如“智行一号”AF),也无需与它们直接通信。所有的跨参与方协调、梯度聚合等复杂工作,都由中心化的协调者(通常被称为VFL Server,但这个角色不属于AF在此服务中的定义)来完成。

Q4:Table 5.2.2.1-1中,Initiated by列写的是“e.g., NWDAF, NEF”。为什么会有NEF?

A4:NEF(Network Exposure Function)是处理来自非可信域请求的安全网关。当VFL训练的某个参与方(比如我们场景中的“智行一号”车联网AF)被运营商视为外部的、非可信的合作伙伴时,它不能直接调用运营商核心网内部的“天穹智脑”AF。此时,它需要将Subscribe请求发送给NEF。NEF在进行安全检查和策略执行后,再将请求转发给“天穹智脑”AF。因此,从“天穹智脑”AF的角度看,这次Subscribe请求就是由NEF发起的。所以,服务的发起方可能是内部的NWDAF,也可能是代表外部应用的NEF。

Q5:规范中提到了VflTrainingSubsVflTrainingNotify等数据结构,在哪里可以看到它们具体包含了哪些字段?

A5:这些详细的数据模型定义通常在规范的第6章“API Definitions”以及附录A的OpenAPI规范中。第6章会用表格的形式,详细列出每个数据类型(Type)的每个属性(Attribute),包括其名称、数据类型、基数(Cardinality)和描述。而附录A中的YAML文件,则以机器可读的方式,提供了最精确和完整的定义。我们将在后续的文章中,对这些关键的数据结构进行详细的解析。