论文《Federated Social Recommendation with Graph Neural Network》阅读

论文《Federated Social Recommendation with Graph Neural Network》阅读

  • 论文概况
  • Intro
  • Methodology
    • 问题形式化
    • FeSoG
      • 本地图设计
      • 本地差分隐私
      • Pseudo-Item Labeling
    • 模型优化
    • 模型训练
  • 论文总结

论文概况

今天总结一下最近阅读的关于联邦社会化推荐的论文《Federated Social Recommendation with Graph Neural Network》,论文 由 UIC(伊利诺伊大学芝加哥分校)数据挖掘方向大牛 Philip S. Yu(俞士纶)团队 Zhiwei Liu 等人 和 北航 Hao Peng 等人完成。论文发表在期刊 TIST (ACM Transactions on Intelligent Systems and Technology) 2022 上。论文主要完成一个基于联邦学习框架下的社会化推荐模型 FeSoG

论文地址: 论文地址

论文整体来说,Writing部分相对比较流畅,easy to read。但是同时文中出现较大比例的typo、语法错误等,对于阅读不太友好。作为本人关于联邦推荐的入门读物,这里总结一下,下面进入具体介绍。
Illustration

Intro

作者首先总结了联邦社会化推荐(Federated Social Recommender System,FSRS)的主要几个挑战:

  • 异构性。social recommendation既包括 U-U 连接,也包括 U-I 连接。
  • 个性化。每个用户的兴趣之间呈现非独立同分布,应该单独处理。
  • 安全性。联邦推荐场景下应注意保护用户的个人隐私

针对上述挑战,作者提出基于图神经网络的联邦社会化推荐(Federated Social Recommendation with Graph Neural Networks, FeSoG)模型。

Methodology

问题形式化

这里先介绍问题形式化 及 关键定义。
用户集合 U = { u 1 , u 2 , … , u N } \mathcal{U}= \left\{ u_1, u_2, \ldots, u_N\right\} U={u1,u2,,uN} 及物品集合 T = { t 1 , t 2 , … , t M } \mathcal{T}= \left\{t_1, t_2, \ldots, t_M \right\} T={t1,t2,,tM},用户与物品、用户与用户之间形成评分矩阵 R ∈ R N × M \mathbf{R} \in \mathbb{R}^{N \times M} RRN×M,用户邻接矩阵 S ∈ { 0 , 1 } N × N \mathbf{S} \in\{0,1\}^{N \times N} S{0,1}N×N

针对联邦推荐场景,

  • 客户端(Client):每个用户 n n n 即一个客户端 c n c_n cn,客户端包含的数据包括 用户对物品的评分 ( R n ⋅ \mathbf{R}_{n\cdot} Rn)和他与其他用户之间的之间相邻关系( S n ⋅ \mathbf{S}_{n\cdot} Sn)。
  • 服务器(Center Server):中心用户不包含用户的邻接数据和用户的交互矩阵。中心服务器包含的数据包含每个client上的参数,每个用户、每个物品的embedding。通过 server 和 client 之间每轮的数据更新,根据 client 上传给 server 的梯度数据进行更新, 更新完成之后再将最新的参数都更新给每个客户端。
  • 联邦社会化推荐(FSRS):对于 任意客户端 c n c_n cn,根据
    当前用户 n n n 的交互向量 r n = { r n 1 , r n 2 , ⋯ , r n k } \mathbf{r}_{n} = \{{r}_{n1}, {r}_{n2}, \cdots, {r}_{nk}\} rn={rn1,rn2,,rnk} 及 一阶邻居向量 s n = { s n 1 , s n 2 , ⋯ , s n p } \mathbf{s}_{n} = \{{s}_{n1}, {s}_{n2}, \cdots, {s}_{np}\} sn={sn1,sn2,,snp} n , p ∈ { 1 , 2 , ⋯ , N } n, p \in \{1, 2, \cdots, N\} n,p{1,2,,N} k ∈ { 1 , 2 , ⋯ , M } k \in \{1, 2, \cdots, M\} k{1,2,,M}),FSRS 在 不知道每个client 的 raw data 的基础上预测用户的交互数据。

问题形式化:

上述 FSRS 的定义如下所示:
用户 n n n 的 交互数据 T ( n ) = { t 1 ( n ) , t 2 ( n ) , … , t k ( n ) } \mathcal{T}^{(n)}=\left\{t_1^{(n)}, t_2^{(n)}, \ldots, t_k^{(n)}\right\} T(n)={t1(n),t2(n),,tk(n)},社交邻居 U ( n ) = { u 1 ( n ) , u 2 ( n ) , … , u p ( n ) } \mathcal{U}^{(n)}=\left\{u_1^{(n)}, u_2^{(n)}, \ldots, u_p^{(n)}\right\} U(n)={u1(n),u2(n),,up(n)},FSRS 预测 mask 掉的物品 t ∗ ∈ T \ T ( n ) t^* \in \mathcal{T} \backslash \mathcal{T}(n) tT\T(n) 的交互分数。

通过对 每个客户 c n c_n cn 构建本地的局部异构图 G n \mathcal{G}_{n} Gn(包含U-U 及 U-I),

给出形式化定义:给定每个 客户 n n n 的局部异构图集合 { G n ∣ n = 1 N } \left\{\mathcal{G}_{n} \mid _{n=1}^{N}\right\} {Gnn=1N},在不接触 local graph 中raw data 的前提下,FSRS致力于预测 连边 ( u n , t ∗ ) (u_n, t^*) (un,t) 的值。

FeSoG

在这里插入图片描述

本地图设计

这部分就是设计了一个GAT网络,完成异构图上的embedding传播,这部分embedding是根据center server 下载的,本地用户只保存他自己的交互物品 和 好友用户,因此只能传播一阶邻居信息,这里不做赘述,把公式摆在底下。

o n p = LeakyReLU ⁡ ( a ⊤ [ W 1 e u n ∥ W 1 e u p ] ) . (1) o_{n p}=\operatorname{LeakyReLU}\left(\mathbf{a}^{\top}\left[\mathbf{W}_1 \mathbf{e}_{u_n} \| \mathbf{W}_1 \mathbf{e}_{u_p}\right]\right).\tag{1} onp=LeakyReLU(a[W1eunW1eup]).(1)

α n p = softmax ⁡ p ( o n p ) = exp ⁡ ( o n p ) ∑ i = 1 P exp ⁡ ( o n i ) . (2) \alpha_{n p}=\operatorname{softmax}_p\left(o_{n p}\right)=\frac{\exp \left(o_{n p}\right)}{\sum_{i=1}^P \exp \left(o_{n i}\right)}.\tag{2} αnp=softmaxp(onp)=i=1Pexp(oni)exp(onp).(2)

v n k = LeakyReLU ⁡ ( b ⊤ [ W 2 e u n ∥ W 2 e i k ] ) . (3) v_{n k}=\operatorname{LeakyReLU}\left(\mathbf{b}^{\top}\left[\mathbf{W}_2 \mathbf{e}_{u_n} \| \mathbf{W}_2 \mathbf{e}_{i_k}\right]\right).\tag{3} vnk=LeakyReLU(b[W2eunW2eik]).(3)

β n k = softmax ⁡ ( v n k ) = exp ⁡ ( v n i ) ∑ i = 1 K exp ⁡ ( v n i ) . (4) \beta_{n k}=\operatorname{softmax}\left(v_{n k}\right)=\frac{\exp \left(v_{n i}\right)}{\sum_{i=1}^K \exp \left(v_{n i}\right)}.\tag{4} βnk=softmax(vnk)=i=1Kexp(vni)exp(vni).(4)

h u ( n ) = ∑ p = 1 p α n ρ W h e u p . (5) \mathbf{h}_u^{(n)}=\sum_{p=1}^p \alpha_{n \rho} \mathbf{W}_h \mathbf{e}_{u_p}.\tag{5} hu(n)=p=1pαnρWheup.(5)

h t ( n ) = ∑ k = 1 K β n k W h e k . (6) \mathbf{h}_t^{(n)}=\sum_{k=1}^K \beta_{n k} \mathbf{W}_h \mathbf{e}_k.\tag{6} ht(n)=k=1KβnkWhek.(6)

h t ( n ) \mathbf{h}_t^{(n)} ht(n) 是 交互图 embedding, h t ( u ) \mathbf{h}_t^{(u)} ht(u) 是 社交图 embedding,通过注意力系数进行加权求和计算,如下所示:

γ u = exp ⁡ ( c ⊤ [ h u ( n ) ∥ v u ] ) exp ⁡ ( c ⊤ [ h u ( n ) ∥ v u ] ) + exp ⁡ ( c ⊤ [ h t ( n ) ∥ v t ] ) + exp ⁡ ( c ⊤ [ h s ( n ) ∥ ∥ v s ] ) , γ t = exp ⁡ ( c ⊤ [ h t ( n ) ∥ v t ] ) exp ⁡ ( c ⊤ [ h u ( n ) ∥ v u ] ) + exp ⁡ ( c ⊤ [ h t ( n ) ∥ v t ] ) + exp ⁡ ( c ⊤ [ h s ( n ) ∥ v s ] ) , γ s = exp ⁡ ( c ⊤ [ h s ( n ) ∥ v s ] ) exp ⁡ ( c ⊤ [ h u ( n ) ∥ v u ] ) + exp ⁡ ( c ⊤ [ h t ( n ) ∥ v t ] ) + exp ⁡ ( c ⊤ [ h s ( n ) ∥ v s ] ) . (7) \begin{aligned} & \gamma_u=\frac{\exp \left(\mathrm{c}^{\top}\left[\mathbf{h}_u^{(n)} \| \mathbb{v}_u\right]\right)}{\exp \left(\mathrm{c}^{\top}\left[\mathbf{h}_u^{(n)} \| \mathbf{v}_u\right]\right)+\exp \left(\mathbf{c}^{\top}\left[\mathbf{h}_t^{(n)} \| \mathbb{v}_t\right]\right)+\exp \left(\mathrm{c}^{\top}\left[\mathbf{h}_s^{(n)}\|\|_{v_s}\right]\right)}, \\ & \gamma_t=\frac{\exp \left(\mathbf{c}^{\top}\left[\mathbf{h}_t^{(n)} \| \mathbf{v}_t\right]\right)}{\exp \left(\mathbf{c}^{\top}\left[\mathbf{h}_u^{(n)} \| \mathbf{v}_u\right]\right)+\exp \left(\mathbf{c}^{\top}\left[\mathbf{h}_t^{(n)} \| \mathbb{v}_t\right]\right)+\exp \left(\mathbf{c}^{\top}\left[\mathbf{h}_s^{(n)} \| \mathbf{v}_s\right]\right)}, \\ & \gamma_s=\frac{\exp \left(\mathbf{c}^{\top}\left[\mathbf{h}_s^{(n)} \| \mathbf{v}_s\right]\right)}{\exp \left(c^{\top}\left[\mathbf{h}_u^{(n)} \| v_u\right]\right)+\exp \left(c^{\top}\left[\mathbf{h}_t^{(n)} \| \mathbb{v}_t\right]\right)+\exp \left(c^{\top}\left[\mathbf{h}_s^{(n)} \| \mathbf{v}_s\right]\right)}.\end{aligned} \tag{7} γu=exp(c[hu(n)vu])+exp(c[ht(n)vt])+exp(c[hs(n)vs])exp(c[hu(n)vu]),γt=exp(c[hu(n)vu])+exp(c[ht(n)vt])+exp(c[hs(n)vs])exp(c[ht(n)vt]),γs=exp(c[hu(n)vu])+exp(c[ht(n)vt])+exp(c[hs(n)vs])exp(c[hs(n)vs]).(7)
e n ∗ = γ s e u n + γ u h u ( n ) + γ t h t ( n ) (8) \mathbf{e}_{n}^*=\gamma_s \mathbf{e}_{u_n}+\gamma_u \mathbf{h}_u^{(n)}+\gamma_t \mathbf{h}_t^{(n)} \tag{8} en=γseun+γuhu(n)+γtht(n)(8)
通过内积计算 交互分数:
R ^ n t = e n ∗ ⊤ e t . (9) \hat{\mathbf{R}}_{n t}={\mathbf{e}_n^*}^\top \mathbf{e}_t.\tag{9} R^nt=enet.(9)
本地训练损失函数定义如下:
L u = ∑ t ∈ T ( u ) ( R u t − R ^ u t ) 2 ∣ T ( u ) ∣ (10) \mathcal{L}_u=\sqrt{\frac{\sum_{t \in \mathcal{T}^{(u)}}\left(\mathbf{R}_{u t}-\hat{\mathbf{R}}_{u t}\right)^2}{\left|\mathcal{T}^{(u)}\right|}}\tag{10} Lu= T(u) tT(u)(RutR^ut)2 (10)

Local Graph Neural Network
上述内容计算完成本地的所有计算过程,embedding 和模型参数通过center server download下来,在本地进行 GAT 计算,并通过 反向传播完成参数更新(如公式(10)所示)。

本地差分隐私

在上述基础上,由于设计到 client 和 server 之间的 梯度上传 和 参数下载,为了防止用户信息泄露(根据FedMF,连续两次上传的梯度被获取后,可以推测出用户的rating信息),在上传过程中加入了本地差分隐私(Local Differential Privacy,LDP)操作。

具体地,就是就梯度数据进行clip操作(范围控制在 δ \delta δ 内),同时加入 一定强度范围( λ \lambda λ)内的 Laplacian Noise。具体如下所示:
g ~ ( n ) = clip ⁡ ( g ( n ) , δ ) + Laplacian ⁡ ( 0 , λ ) . (11) \tilde{\mathbf{g}}^{(n)}=\operatorname{clip}\left(\mathbf{g}^{(n)}, \delta\right)+\operatorname{Laplacian}(0, \lambda). \tag{11} g~(n)=clip(g(n),δ)+Laplacian(0,λ).(11)

具体操作中,为实现动态噪声,使用如下实现形式:
g ~ ( n ) = clip ⁡ ( g ( n ) , δ ) + Laplacian ⁡ ( 0 , λ ⋅ mean ⁡ ( g ( n ) ) ) , (12) \tilde{\mathbf{g}}^{(n)}=\operatorname{clip}\left(\mathbf{g}^{(n)}, \delta\right)+\operatorname{Laplacian}\left(0, \lambda \cdot \operatorname{mean}\left(\mathbf{g}^{(n)}\right)\right), \tag{12} g~(n)=clip(g(n),δ)+Laplacian(0,λmean(g(n))),(12)
其中, g ( n ) = { g t ( n ) , g m ( n ) , g u ( n ) } = ∂ L u ∂ Θ \mathrm{g}^{(n)} = \{ \mathbf{g}_t^{(n)}, \mathbf{g}_m^{(n)}, \mathbf{g}_u^{(n)} \} = \frac{\partial \mathcal{L}_u} {\partial \Theta} g(n)={gt(n),gm(n),gu(n)}=ΘLu

Pseudo-Item Labeling

为进一步保护用户隐私(梯度为 0 的 梯度向量对应用户的 未交互 物品),作者加入了 q q q 个假标签,记作 T ~ ( n ) = { t ~ 1 ( n ) , t ~ 2 ( n ) , … , t ~ q ( n ) } \tilde{\mathcal{T}}^{(n)}=\left\{ \tilde{t}_1^{(n)}, \tilde{t}_2^{(n)}, \ldots, \tilde{t}_q^{(n)} \right\} T~(n)={t~1(n),t~2(n),,t~q(n)}。在预测过程中,通过四舍五入的方式将 sample 出来的 pseudo items 作为标签进行训练,以提高 传输过程中的 安全性。具体如下:
L ~ u = ∑ t ∈ T ( u ) ∪ T ~ ( u ) ( R u t − R ^ u t ) 2 ∣ T ( u ) ∣ , (13) \tilde{\mathcal{L}}_u=\sqrt{\frac{\sum_{t \in \mathcal{T}(u) \cup \tilde{\mathcal{T}}^{(u)}}\left(\mathbf{R}_{u t}-\hat{\mathbf{R}}_{u t} \right)^2}{\left|\mathcal{T}^{(u)}\right|}}, \tag{13} L~u= T(u) tT(u)T~(u)(RutR^ut)2 ,(13)
其中, R ^ u t ∈ R \hat{\mathbf{R}}_{u t} \in \mathbb{R} R^utR 表示标签值, R u t ∈ N \mathbf{R}_{u t} \in \mathbb{N} RutN 表示 预测值。

模型优化

作者将梯度数据分为三部分,模型梯度 g ‾ m \overline{\mathbf{g}}_m gm,物品 embedding 梯度 g ‾ t \overline{\mathbf{g}}_t gt,及用户 embedding 梯度 g ‾ u \overline{\mathbf{g}}_u gu,通过对应client 对应rating数量大小 进行 加权求期望的操作完成 中心服务器 平均梯度 的计算,并根据梯度完成模型参数的更新。更新之后将参数下载到 各个 client ,将参数进行更新。具体如下:
g ‾ m = ∑ n ∈ N ∣ R n ∣ ⋅ g ~ m ( n ) ∑ n ∈ N ∣ R n ∣ , g ‾ t = ∑ n ∈ N ∣ R n ∣ ⋅ g ~ t ( n ) ∑ n ∈ N ∣ R n t ∣ , g ‾ u = ∑ n ∈ N ∣ R n ∣ ⋅ g ~ u ( n ) ∑ n ∈ N ∣ R n t ∣ , (14) \begin{aligned} &\overline{\mathbf{g}}_m =\frac{\sum_{n \in \mathcal{N}}\left|\mathcal{R}_n\right| \cdot \tilde{\mathbf{g}}_m^{(n)}}{\sum_{n \in \mathcal{N}}\left|\mathcal{R}_n\right|}, \\ &\overline{\mathbf{g}}_t =\frac{\sum_{n \in \mathcal{N}}\left|\mathcal{R}_n\right| \cdot \tilde{\mathbf{g}}_t^{(n)}}{\sum_{n \in \mathcal{N}}\left|\mathcal{R}_n^t\right|}, \\ &\overline{\mathbf{g}}_u =\frac{\sum_{n \in \mathcal{N}} \left|\mathcal{R}_n\right| \cdot \tilde{\mathbf{g}}_u^{(n)} }{\sum_{n \in \mathcal{N}} \left| \mathcal{R}_n^t \right|}, \end{aligned} \tag{14} gm=nNRnnNRng~m(n),gt=nNRntnNRng~t(n),gu=nNRntnNRng~u(n),(14)

模型训练

上述所有过程,作者通过 一个 算法 进行了 整体展示,这对于理解整体流程很有帮助,具体如下:

Algorithm

论文总结

上述内容就是关于 FeSoG 模型的所有内容,模型写作非常流畅。值得推荐!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/26729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第五讲:51单片机+RA8889驱动控制彩屏 完整源码说明 【 源码v1.2 】

51单片机驱动控制彩屏系列讲座 第一讲:单片机STC89C52RA8889驱动控制彩屏【 源码v1.0 】 第二讲:单片机STC89C52RA8889驱动控制彩屏 代码移植介绍 第三讲:单片机STC89C52RA8889驱动控制彩屏 代码的压缩(Keil编译器) 第…

phpstudy的安装dvwa

phpstudy安装dvwa 1. 下载phpstudy Windows版phpstudy下载 - 小皮面板(phpstudy) (xp.cn) 2. 搭建dvwa靶场 下载地址:https://github.com/ethicalhack3r/DVWA/archive/master.zip 将其放入www文件夹中 3. 修改配置文件 将\DVWA-master\config中config.inc.php…

STL-常用容器

3.1.1. string基本概念 本质: string是C风格的字符串,char*是C语言风格的字符串string本质上是一个类 string和char*的区别: char*是一个指针string是一个类,类内部封装并负责管理char*,是一个char*型的容器 特点&a…

ISCC2024 winterbegins

首先,用IDA打开程序,看到一大堆while(1)又套着while(1)的结构,肯定是控制流平坦化了,我们可以使用IDA插件d810去掉。 现在程序就好看多了。如果IDA没有显示这堆中文字符串,可以考虑使用IDA8.3,就可以显示…

stm32_HAL_CAN(特点:广播试,检测线路是否空,id有优先级)

UART I2C SPI 介绍 CAN(Controller Area Network)接口是一种常用于嵌入式系统中的通信接口,尤其在汽车和工业领域。它由Robert Bosch GmbH在1986年开发,旨在提供一种可靠、高效、灵活的车载通信网络。CAN总线的主要 特点包括&am…

eNSP学习——配置高级的访问控制列表

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、搭建OSPF网络 3、配置Telnet 4、配置高级ACL控制访问 需要eNSP各种配置命令的点击链接自取:华为eNSP各种设备配置命令大全PDF版_ensp配置命令大全资源-…

数据结构01 栈及其相关问题讲解

栈是一种线性数据结构,栈的特征是数据的插入和删除只能通过一端来实现,这一端称为“栈顶”,相应的另一端称为“栈底”。 栈及其特点 用一个简单的例子来说,栈就像一个放乒乓球的圆筒,底部是封住的,如果你想…

【简单介绍下Sass,什么是Sass?】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

Linux:多线程的操作

多线程操作 进程与线程线程的创建 create_pthread创建线程池给线程传入对象的指针 线程等待 pthread_join退出线程 pthread_exit线程等待参数 retval 与 线程退出参数 retval 线程中断 pthread_cancel获取线程编号 pthread_self线程分离 pthread_detach 进程与线程 进程是资源…

史上最全,呕心沥血总结oracle推进SCN方法(八)

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG数据库运维(如安装迁移,性能优化、故障应急处理等) 公众号:老苏畅谈运维 欢迎关注本人公众号,更多精彩与您分享。前面介…

17-C语言中的变量生命周期——自动存储期、青苔存储期、自定义存储期

17-C语言中的变量生命周期——自动存储期、青苔存储期、自定义存储期 文章目录 17-C语言中的变量生命周期——自动存储期、青苔存储期、自定义存储期一、自动存储期示例 二、静态存储期2.1 示例 三、自定义存储期3.1 如何申请内存3.2 如何释放内存3.3 如何清空内存3.4 示例 概念…

MQTT通讯协议接入

1.MQTT协议概述 MQTT是一种基于发布/订阅模式的轻量级消息传输协议,常用于低带宽、不可靠网络环境下传输消息,适用于物联网设备之间的通信。 1.1 MQTT协议的组件 客户端(Client):连接到MQTT代理服务器的设备&#xff…

计算机组成原理(六)

0x12345678和12345678H都是指同一个十六进制,也就是12345678,不过是不同的编程语言的写法而已 具体来说,如果有 n 根地址线,计算机可以寻址的内存空间大小是 2^n 字节。 24根地址线: 如果一个系统有24根地址线,意味着它…

汇编程序设计之 位操作指令、顺序程序设计

文章目录 位操作类指令逻辑运算指令NOTORANDXORTEST 移位指令逻辑移位算数移位循环移位指令 处理机控制类指令顺序结构程序设计概念例子 位操作类指令 逻辑运算指令 NOT OR 对于每一个位,有1即为1 AND 同时为1才是1 XOR 不相同才为1 TEST 和and 一样的功能&…

RK3568技术笔记六 新建 Ubuntu Linux 虚拟机

VMware 安装完成后,启动 VMware 软件。启动后在 VMware 主界面点击“创建新的虚拟机”。如下图所示: 开始对新建的虚拟机进行设置。选择“自定义”,然后点击“下一步”。如下图所示: 使用默认配置,单击“下一步”。如下…

PyTorch -- 最常见激活函数的选择

首先,简单复习下什么是梯度:梯度是偏微分的集合 举例说明:对于 z y 2 − x 2 : ∇ z ( ∂ z ∂ x , ∂ z ∂ y ) ( 2 x , 2 y ) z y^2-x^2: \nabla z (\frac{\partial z}{\partial x}, \frac{\partial z}{\partia…

夏日炎炎 水域守护:北斗守护安全防线——为生命撑起智能保护伞

随着夏季的来临,炎热的天气让许多人纷纷寻求水的清凉。清凉的河流与广阔的海域成为了不少人消暑降温的向往之地。然而,私自下河、下海的行为却暗藏着巨大的安全隐患,每年夏季溺水事故频发,给无数家庭带来不可挽回的悲痛。为有效遏…

规模弹性: 管理谷歌的TPUv4机器学习超级计算机

摘要 TPUv4(张量处理单元)是谷歌用于机器学习训练的第三代加速器,采用定制的三维环形互连,部署为 4096 节点的超级计算机。在本文中,我们将介绍设计和运行软件基础设施的经验,这些软件基础设施使 TPUv4 超…

Git进阶使用(图文详解)

文章目录 Git概述Git基础指令Git进阶使用一、Git分支1.主干分支2.其他分支2.1创建分支2.2查看分支1. 查看本地分支2. 查看远程分支3. 查看本地和远程分支4. 显示分支的详细信息5. 查看已合并和未合并的分支 2.3切换分支1. 切换到已有的本地分支2. 创建并切换到新分支3. 切换到远…

【SkiaSharp绘图03】SKPaint详解(一)BlendMode混合模式、ColorFilter颜色滤镜

文章目录 SKPaintSKPaint属性BlendMode获取或设置混合模式SKBlendMode 枚举成员效果预览 Color/ColorF获取或设置前景色ColorFilter 颜色滤镜CreateBlendMode 混合模式CreateColorMatrix 颜色转换CreateCompose 组合滤镜CreateHighContrast 高对比度滤镜CreateLighting 照明滤镜…