0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用NVIDIA FLARE开发更具通用性的AI模型

星星科技指导员 来源:NVIDIA 作者:Holger Roth 2022-04-15 09:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

联邦学习( FL )已成为许多实际应用的现实。它使全球范围内的跨国合作能够构建更健壮、更通用的机器学习人工智能模型。

NVIDIA FLARE v2.0 是一款开源的 FL SDK ,通过共享模型权重而非私有数据,数据科学家可以更轻松地协作开发更具通用性的健壮人工智能模型。

对于医疗保健应用程序,这在数据受患者保护、某些患者类型和疾病的数据可能稀少,或者数据在仪器类型、性别和地理位置上缺乏多样性的情况下尤其有益。

查看标志

NVIDIA FLARE 代表 联合学习应用程序运行时环境 。它是引擎的基础NVIDIA Clara Train FL 软件,它已经被用于医学成像、遗传分析、肿瘤学和 COVID-19 研究中的人工智能应用。 SDK 使研究人员和数据科学家能够将其现有的机器学习和深度学习工作流调整为分布式范例,并使平台开发人员能够为分布式多方协作构建安全、隐私保护的产品。

NVIDIA FLARE 是一个轻量级、灵活且可扩展的分布式学习框架,在 Python 中实现,与您的基础培训库无关。您可以在 PyTorch , TensorFlow ,甚至只是 NumPy 中实现自己的数据科学工作流,并在联邦设置中应用它们。

也许您希望实现流行的 联邦平均( FedAvg )算法 。从初始全局模型开始,每个 FL 客户机在其本地数据上训练模型一段时间,并将模型更新发送到服务器进行聚合。然后,服务器使用聚合更新来更新下一轮培训的全局模型。此过程将反复多次,直到模型收敛。

NVIDIA FLARE 提供可定制的控制器工作流,以帮助您实施 FedAvg 和其他 FL 算法,例如, 循环重量转移 。它安排不同的任务,例如深度学习培训,在参与的 FL 客户机上执行。工作流使您能够从每个客户端收集结果(例如模型更新),并将其聚合以更新全局模型,并将更新的全局模型发回以供继续培训。图 1 显示了原理。

每个 FL 客户机充当工人,请求执行下一个任务,例如模型培训。控制器提供任务后,工作人员执行任务并将结果返回给控制器。在每次通信中,可以有可选的过滤器来处理任务数据或结果,例如, homomorphic encryption 和解密或差异隐私。

pYYBAGJYzbmADPypAABc33uq4sk944.png

图 1 。 NVIDIA FLARE 工作流

实现 FedAvg 的任务可以是一个简单的 PyTorch 程序,它为 CIFAR-10 训练一个分类模型。您当地的培训师可能看起来像下面的代码示例。为了简单起见,我跳过了整个培训循环。

import torch
import torch.nn as nn
import torch.nn.functional as F from nvflare.apis.dxo import DXO, DataKind, MetaKey, from_shareable
from nvflare.apis.executor import Executor
from nvflare.apis.fl_constant import ReturnCode
from nvflare.apis.fl_context import FLContext
from nvflare.apis.shareable import Shareable, make_reply
from nvflare.apis.signal import Signal
from nvflare.app_common.app_constant import AppConstants class SimpleNetwork(nn.Module): def __init__(self): super(SimpleNetwork, self).__init__() self.conv1 = nn.Conv2d(3, 6, 5) self.pool = nn.MaxPool2d(2, 2) self.conv2 = nn.Conv2d(6, 16, 5) self.fc1 = nn.Linear(16 * 5 * 5, 120) self.fc2 = nn.Linear(120, 84) self.fc3 = nn.Linear(84, 10) def forward(self, x): x = self.pool(F.relu(self.conv1(x))) x = self.pool(F.relu(self.conv2(x))) x = torch.flatten(x, 1) # flatten all dimensions except batch x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) return x class SimpleTrainer(Executor): def __init__(self, train_task_name: str = AppConstants.TASK_TRAIN): super().__init__() self._train_task_name = train_task_name self.device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") self.model = SimpleNetwork() self.model.to(self.device) self.optimizer = torch.optim.SGD(self.model.parameters(), lr=0.001, momentum=0.9) self.criterion = nn.CrossEntropyLoss() def execute(self, task_name: str, shareable: Shareable, fl_ctx: FLContext, abort_signal: Signal) -> Shareable: """ This function is an extended function from the superclass. As a supervised learning-based trainer, the train function will run training based on model weights from `shareable`. After finishing training, a new `Shareable` object will be submitted to server for aggregation.""" if task_name == self._train_task_name: epoch_len = 1 # Get current global model weights dxo = from_shareable(shareable) # Ensure data kind is weights. if not dxo.data_kind == DataKind.WEIGHTS: self.log_exception(fl_ctx, f"data_kind expected WEIGHTS but got {dxo.data_kind} instead.") return make_reply(ReturnCode.EXECUTION_EXCEPTION) # creates an empty Shareable with the return code # Convert weights to tensor and run training torch_weights = {k: torch.as_tensor(v) for k, v in dxo.data.items()} self.local_train(fl_ctx, torch_weights, epoch_len, abort_signal) # compute the differences between torch_weights and the now locally trained model model_diff = ... # build the shareable using a Data Exchange Object (DXO) dxo = DXO(data_kind=DataKind.WEIGHT_DIFF, data=model_diff) dxo.set_meta_prop(MetaKey.NUM_STEPS_CURRENT_ROUND, epoch_len) self.log_info(fl_ctx, "Local training finished. Returning shareable") return dxo.to_shareable() else: return make_reply(ReturnCode.TASK_UNKNOWN) def local_train(self, fl_ctx, weights, epoch_len, abort_signal): # Your training routine should respect the abort_signal. ... # Your local training loop ... for e in range(epoch_len): ... if abort_signal.triggered: self._abort_execution() ... def _abort_execution(self, return_code=ReturnCode.ERROR) -> Shareable: return make_reply(return_code)

您可以看到您的任务实现可以执行许多不同的任务。您可以计算每个客户机上的摘要统计信息,并与服务器共享(记住隐私限制),执行本地数据的预处理,或者评估已经训练过的模型。

在 FL 培训期间,您可以在每轮培训开始时绘制全局模型的性能。对于本例,我们在 CIFAR-10 的异构数据拆分上运行了八个客户端。在下图(图 2 )中,我显示了默认情况下 NVIDIA FLARE 2.0 中可用的不同配置:

FedAvg

FedProx

FedOpt

使用同态加密进行安全聚合的 FedAvg ( FedAvg HE )

poYBAGJYzcCADwrRAABs3gmM85Q462.png

图 2 。训练期间不同 FL 算法全局模型的验证精度

虽然 FedAvg 、 FedAvg HE 和 FedProx 在这项任务中的性能相当,但您可以使用 FedOpt 设置观察到改进的收敛性,该设置使用 SGD with momentum 来更新服务器上的全局模型。

整个 FL 系统可以使用管理 API 进行控制,以自动启动和操作不同配置的任务和工作流。 NVIDIA 还提供了一个全面的资源调配系统,可在现实世界中轻松安全地部署 FL 应用程序,同时还提供了运行本地 FL 模拟的概念验证研究。

poYBAGJYzceAejT8AADeGNbDAM0088.png

图 3 。 NVIDIA FLARE 供应、启动、操作( PSO )组件及其 API

开始

NVIDIA FLARE 使 FL 可用于更广泛的应用。潜在使用案例包括帮助能源公司分析地震和井筒数据、制造商优化工厂运营以及金融公司改进欺诈检测模型。

关于作者

Holger Roth 是 NVIDIA 的高级应用研究科学家,专注于医学成像的深度学习。在过去几年中,他一直与临床医生和学者密切合作,为放射应用开发基于深度学习的医学图像计算和计算机辅助检测模型。他拥有博士学位。来自英国伦敦大学学院。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    5513

    浏览量

    109173
  • 计算机
    +关注

    关注

    19

    文章

    7769

    浏览量

    92803
  • 深度学习
    +关注

    关注

    73

    文章

    5591

    浏览量

    123992
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NVIDIA推动面向数字与物理AI的开源模型发展

    NVIDIA 发布一系列涵盖语音、安全与辅助驾驶领域的全新 AI 工具,其中包括面向移动出行领域的行业级开源视觉-语言-动作推理模型(Reasoning VLA) NVIDIA DRI
    的头像 发表于 12-13 09:50 841次阅读

    利用NVIDIA Cosmos开放世界基础模型加速物理AI开发

    NVIDIA 最近发布了 NVIDIA Cosmos 开放世界基础模型(WFM)的更新,旨在加速物理 AI 模型的测试与验证数据生成。借助
    的头像 发表于 12-01 09:25 602次阅读

    NVIDIA 利用全新开源模型与仿真库加速机器人研发进程

    科研人员及开发者打造功能更强大、适应更强的机器人。   全新的 NVIDIA Isaac GR00T 开源基础模型将为机器人赋予接近人类的推理能力,使其能够拆解复杂指令,并借助已有知
    的头像 发表于 09-30 09:52 2799次阅读
    <b class='flag-5'>NVIDIA</b> 利用全新开源<b class='flag-5'>模型</b>与仿真库加速机器人研发进程

    什么是AI模型的推理能力

    NVIDIA 的数据工厂团队为 NVIDIA Cosmos Reason 等 AI 模型奠定了基础,该模型近日在 Hugging Face
    的头像 发表于 09-23 15:19 903次阅读

    NVIDIA通过全新 Omniverse库、Cosmos物理AI模型AI计算基础设施,为机器人领域开启新篇章

    NVIDIA 通过全新 Omniverse 库、Cosmos 物理 AI 模型AI 计算基础设施,为机器人领域开启新篇章   · 全新 NVID
    的头像 发表于 08-12 11:29 1393次阅读
    <b class='flag-5'>NVIDIA</b>通过全新 Omniverse库、Cosmos物理<b class='flag-5'>AI</b><b class='flag-5'>模型</b>及<b class='flag-5'>AI</b>计算基础设施,为机器人领域开启新篇章

    首创开源架构,天玑AI开发套件让端侧AI模型接入得心应手

    AI的演进正在逼近“终端智能涌现”的拐点,从通用模型向场景落地迁移成为关键议题。联发科以“AI随芯,应用无界”为主题召开天玑开发者大会202
    发表于 04-13 19:52

    使用NVIDIA RTX PRO Blackwell系列GPU加速AI开发

    NVIDIA GTC 推出新一代专业级 GPU 和 AI 赋能的开发者工具—同时,ChatRTX 更新现已支持 NVIDIA NIM,RTX Remix 正式结束测试阶段,本月的
    的头像 发表于 03-28 09:59 1107次阅读

    英伟达GTC2025亮点 NVIDIA推出Cosmos世界基础模型和物理AI数据工具的重大更新

    、Figure AI、Skild AI 是最早采用该技术的公司。 NVIDIA 宣布推出全新 NVIDIA Cosmos 世界基础模型 (W
    的头像 发表于 03-20 19:01 1196次阅读

    通用汽车和NVIDIA合作构建定制化AI系统

    通用汽车和 NVIDIA 宣布正在借助 AI、仿真和加速计算技术,合作打造下一代汽车、工厂和机器人。
    的头像 发表于 03-20 14:40 1485次阅读

    NVIDIA 推出开放推理 AI 模型系列,助力开发者和企业构建代理式 AI 平台

    月 18 日 ——  NVIDIA 今日发布具有推理功能的开源 Llama Nemotron 模型系列,旨在为开发者和企业提供业务就绪型基础,助力构建能够独立工作或以团队形式完成复杂任务的高级
    发表于 03-19 09:31 339次阅读
    <b class='flag-5'>NVIDIA</b> 推出开放推理 <b class='flag-5'>AI</b> <b class='flag-5'>模型</b>系列,助力<b class='flag-5'>开发</b>者和企业构建代理式 <b class='flag-5'>AI</b> 平台

    AI开发平台模型怎么用

    AI开发平台极大地简化了AI应用的开发流程,从环境搭建、模型训练到部署集成,每一步都提供了丰富的工具和资源。那么,
    的头像 发表于 02-11 09:53 641次阅读

    NVIDIA发布Cosmos平台,加速物理AI开发

    )和机器人等物理AI系统的快速发展。 Cosmos平台的核心在于其强大的生成式世界基础模型,能够模拟和预测复杂环境中的各种物理现象。结合高级tokenizer,Cosmos能够高效地处理和分析大量数据,为物理AI系统的决策提供有
    的头像 发表于 01-13 11:06 1070次阅读

    NVIDIA推出加速物理AI开发的Cosmos世界基础模型

    经数百万小时的驾驶和机器人视频数据训练的先进模型,可用于普及物理 AI 开发,并以开放模型许可形式提供。
    的头像 发表于 01-09 11:05 1338次阅读

    NVIDIA推出面向RTX AI PC的AI基础模型

    NVIDIA 今日发布能在 NVIDIA RTX AI PC 本地运行的基础模型,为数字人、内容创作、生产力和开发提供强大助力。
    的头像 发表于 01-08 11:01 894次阅读

    NVIDIA推出多个生成式AI模型和蓝图

    NVIDIA 宣布推出多个生成式 AI 模型和蓝图,将 NVIDIA Omniverse 一体化进一步扩展至物理 AI 应用,如机器人、自动
    的头像 发表于 01-08 10:48 1057次阅读