-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfeed.rss
8472 lines (8472 loc) · 953 KB
/
feed.rss
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>飞桨开源社区博客</title>
<link>https://pfcc.blog</link>
<description>Wonderful stories from PaddlePaddle contributors</description>
<lastBuildDate>Sun, 12 Jan 2025 13:08:10 GMT</lastBuildDate>
<docs>https://validator.w3.org/feed/docs/rss2.html</docs>
<generator>https://github.com/jpmonette/feed</generator>
<language>zh-CN</language>
<image>
<title>飞桨开源社区博客</title>
<url>https://pfcc.blog/logo.png</url>
<link>https://pfcc.blog</link>
</image>
<copyright>Copyright (c) 2023-present, PaddlePaddle contributors</copyright>
<item>
<title><![CDATA[飞桨开源社区上海活动剪影]]></title>
<link>https://pfcc.blog/posts/shanghai-event</link>
<guid>https://pfcc.blog/posts/shanghai-event</guid>
<pubDate>Thu, 26 Dec 2024 00:00:00 GMT</pubDate>
<content:encoded><![CDATA[<p>借着 2024 年 12 月 26 日,在上海张江科学会堂举办文心大模型生态大会的机会,非常开心能在上海跟飞桨开源社区的大家线下见面。</p>
<!-- more -->
<h2 id="活动简记" tabindex="-1">活动简记 <a class="header-anchor" href="#活动简记" aria-label="Permalink to "活动简记""></a></h2>
<h3 id="大会会场内部是这样的" tabindex="-1">大会会场内部是这样的 <a class="header-anchor" href="#大会会场内部是这样的" aria-label="Permalink to "大会会场内部是这样的""></a></h3>
<p><img src="./../images/shanghai-event/01.jpg" alt="大会会场"></p>
<h3 id="年度优秀开发者颁奖仪式" tabindex="-1">年度优秀开发者颁奖仪式 <a class="header-anchor" href="#年度优秀开发者颁奖仪式" aria-label="Permalink to "年度优秀开发者颁奖仪式""></a></h3>
<p>下面照片里能找到三位长期给飞桨做开源贡献的同学,欢迎猜测是哪三位,以及找出他们的 GitHub ID。另:2024 年下半年社区的开源之星评选已经启动,欢迎报名:<a href="https://github.com/PaddlePaddle/community/issues/1043" target="_blank" rel="noreferrer">2024 下半年飞桨开源之星评选-信息征集 #1043</a>。</p>
<p><img src="./../images/shanghai-event/02.jpg" alt="年度优秀开发者颁奖"></p>
<h3 id="飞桨的-workshop" tabindex="-1">飞桨的 WorkShop <a class="header-anchor" href="#飞桨的-workshop" aria-label="Permalink to "飞桨的 WorkShop""></a></h3>
<p>飞桨的资深工程师在介绍飞桨 3.0 的技术进展,涵盖了新的中间表示、AI 编译器、自动并行技术,等等。读者可以通过线上的文档来了解详情:<a href="https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/paddle_v3_features/index_cn.html" target="_blank" rel="noreferrer">飞桨 3.0 全新特性</a>。</p>
<p><img src="./../images/shanghai-event/03.jpg" alt="飞桨 3.0 技术进展"></p>
<p>在接下来的 Panel 上,六位顶级的工程师,一起探讨了深度学习框架的最新技术,以及未来展望。</p>
<p><img src="./../images/shanghai-event/04.jpg" alt="Panel"></p>
<p>这个 workshop 的 agenda 在这里:<a href="https://github.com/jzhang533/events/blob/main/paddle-shanghai-meetup/README.md" target="_blank" rel="noreferrer">PaddlePaddle Shanghai Meetup 2024-Winter</a>。</p>
<p>来一张大合影。</p>
<p><img src="./../images/shanghai-event/05.jpg" alt="大合影"></p>
<h3 id="ai-之夜" tabindex="-1">AI 之夜 <a class="header-anchor" href="#ai-之夜" aria-label="Permalink to "AI 之夜""></a></h3>
<p>文心大模型生态大会安排的 AI 之夜,没能参加,很遗憾。</p>
<p><img src="./../images/shanghai-event/06.jpg" alt="AI之夜"></p>
<h2 id="彩蛋-🎊" tabindex="-1">彩蛋 🎊 <a class="header-anchor" href="#彩蛋-🎊" aria-label="Permalink to "彩蛋 🎊""></a></h2>
<p>猜猜,这是哪些人在什么样的精神状态下给谁点赞。</p>
<p><img src="./../images/shanghai-event/07.jpg" alt="彩蛋"></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[【开源江湖闲聊录】化学的尽头是 AI?折腾不止的北美水獭哥]]></title>
<link>https://pfcc.blog/posts/yanguohao-story</link>
<guid>https://pfcc.blog/posts/yanguohao-story</guid>
<pubDate>Fri, 29 Nov 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<p>“圣安东尼奥这个地方太无聊了,我更想去纽约那样的大城市看看。”一位与杨国浩同堂上课的本科生说道。而此时,刚刚跨越半个地球来到 University of Texas 攻读 PhD 的杨国浩,却在这片陌生的土地上,开启了他新的探索旅程。</p>
<!-- more -->
<!-- 导入聊天框功能 -->
<!-- 导入聊天框功能 -->
<h2 id="一、前言" tabindex="-1">一、前言 <a class="header-anchor" href="#一、前言" aria-label="Permalink to "一、前言"">​</a></h2>
<p>杨国浩,一位早期加入飞桨 PaddlePaddle 社区的资深开发者,他的故事充满了探索和突破。笔者与国浩结缘,始于一次社区任务 <a href="https://github.com/PaddlePaddle/community/blob/master/pfcc/call-for-contributions/docs/Call_For_Tutorials.md" target="_blank" rel="noreferrer">[Call for Contribution] Tutorials for PaddlePaddle</a> ,旨在推动更多基于飞桨的应用实践案例的建设。当时,国浩以微信昵称“水獭 Lutra”活跃于社区中,写了很多 CV 套件的案例,笔者因此亲切地称他为“水獭哥”。</p>
<p>初识水獭哥,只觉得他是技术过硬、颇具实力的一名开发者,而随着交流的深入,才逐渐揭开他丰富多彩的背景。水獭哥的求学与职业历程横跨多个领域,从化学到力学,再到生成式人工智能,他以深厚的学术功底和敏锐的洞察力,不断突破自我。从东北的寒冬到深圳的繁华,再到德州的广袤,他一路走来的脚步,不仅记录着技术探索的轨迹,也散发着对生活的热忱与追求。</p>
<p>这次采访,恰好让我们走近了 Paddle 社区一位开发者的独特人生。通过他的故事,让我们感受到了探索的乐趣和坚持的力量,也希望这样的经历能够激励更多开发者勇敢踏上属于自己的追梦之旅。</p>
<h2 id="二、采访内容" tabindex="-1">二、采访内容 <a class="header-anchor" href="#二、采访内容" aria-label="Permalink to "二、采访内容"">​</a></h2>
<ol>
<li>
<p><strong>介绍一下自己吧,水獭兄!</strong></p>
<p><strong>杨国浩:</strong> 本人男,27,现在在德州圣安东尼奥读博。兴趣爱好是样样通,样样松:学过书法,钢琴,电子琴,游泳,足球,拳击,健身(上过课,报过班,有经过半年及以上的系统训练),喜欢听歌,电子游戏,羽毛球,台球,脱口秀(曾经很喜欢或者花了很多时间在这上面事情)。还有好多的东西我都曾在某一段时间非常喜欢,后面又因为各样的原因没在做了,属于一分钟热度了。</p>
</li>
<li>
<p><strong>看到你本科学化学,到研究生学力学,再最终到读博选择生成式 AI 方向,可以讲讲这其中的心路历程吗?是什么让你做出了这样的选择?(还是说万物皆可转码😏)</strong></p>
<p><strong>杨国浩:</strong> 一开始高考报志愿的时候我本来打算学物联网的,我父亲告诉我有个堂哥在读化学博士他觉得读化学也挺好的,就把这个志愿填在最后。当初我觉得应该不会录上,没想到最后被录取了。本科的四年也一直处于不想读了和干一行爱一行之间纠结内耗。最后想读研的时候换方向,跨考个研究生担心自己考不上,想走一个折中的路子,找了个计算化学的方向。</p>
<blockquote>
<p>笔者注✍️:担心考不上,于是选择了考北大,这就是大佬的自信嘛</p>
</blockquote>
<p>考上了以后发现做的第一性原理的计算。那时候其实已经有 AI4Science 类似的论文了,各种原因我没能做成这个方向。工作的时候又选择做 AI + 量子计算挺好的,而且量子计算中的很多理论其实是和第一性原理计算是相通的,可是量子计算的前景短期内不是那么明朗。博士的时候我就决定做纯 AI 就好了。自己的想法状态总是随着自己,随着周围的事情,随着大环境时刻摇摆,时刻变化,所以回头看自己做了很多奇奇怪怪自己都没有办法理解的选择是一两句话说不清楚的。</p>
</li>
<li>
<p><strong>从化学到深度学习这样跨学科的学习过程中,有没有什么建议或者经验可以分享给社区的?</strong></p>
<p><strong>杨国浩:</strong> 这几年的 ACM Gordan Bell prize 我查了下都是颁给在化学、量子计算、材料领域。今年的诺贝尔生物和化学颁给的是 AI。AI 和其他学科的交叉融合是一定的趋势,如果在化学领域的同学们可以两手抓。</p>
</li>
<li>
<p><strong>研究生毕业之后,你在深圳的某科技子公司(公司名需要打码嘛)短暂工作了一年,可以简单讲讲吗?之后为什么又选择去了美国读博呀?</strong></p>
<p><strong>杨国浩:</strong> 那时候就已经有出国读书的打算,想着随便找份工作干就好了。在公司还碰到了一个也在百度量子计算研究所实习过的同学。如果不考虑其他的,工作那段时间做的事情我认为也挺有成就感。后面公司因为资金问题裁员,我也一直想去读书,刚好就迈出这一步,恰好在我和现在这个导师面试的同一天通知我。</p>
</li>
<li>
<p><strong>你夫人也跟你一起在美国吗?</strong></p>
<p><strong>杨国浩:</strong> 是的,也一起在美国。不想异地,找学校的时候也有这个考虑,想着要来就一起来,如果有一个人不能来就不去了。</p>
<!-- 大学 -->
<div style="display: flex; justify-content: space-between">
<figure style="width: 34%">
<img src="../images/yangguohao-story/image-1.jpg" alt="大学小路" />
<figcaption>大学附近的小路</figcaption>
</figure>
<figure style="width: 28.5%">
<img src="../images/yangguohao-story/image-2.jpg" alt="鹿" />
<figcaption>学校里不怕人的头铁🦌</figcaption>
</figure>
<figure style="width: 34%">
<img src="../images/yangguohao-story/image-3.jpg" alt="学校操场" />
<figcaption>学校操场</figcaption>
</figure>
</div>
<blockquote>
<p>笔者注✍️:水獭哥学校附近似乎很原生态,路两边经常会有松鼠、小浣熊...被撞死的尸体</p>
</blockquote>
</li>
<li>
<p><strong>现在在美国的日常生活是怎样的?在生活 or 文化 or 科研上,又发生过一些让你感觉印象比较深的事吗?或者说和国内反差感比较大的事?</strong></p>
<p><strong>杨国浩:</strong> 城市:第一次下飞机看到的圣安东尼奥和国内的三线城市相比,城市规划和建设都差的好多,但是又很符合我对美国中西部城市的那种刻板印象,看久了也习惯了。其他城市可能不一样(例如博伊西,去了以后发现给人的感受不太一样)。</p>
<p>交通:日常生活要开车,公共交通基本等于无,全美第七大城市没有地铁,公交站像摆设一样。市中心的流浪汉不少。夏天的德州特别热,他们聚集在加油站和公交总站的阴凉处乘凉。曾经我开车去加油看到这一幕我不敢下车加油,直接拐出去了。</p>
<p>物价:德州的物价油价比其他州便宜,在大超市买东西量特别大,平均算下来物价我感觉跟国内的深圳上海差不多甚至更便宜。</p>
<p>其他的:这里的人做事很有“松弛感”,以前老说国内办事慢,踢皮球,来了这里发现 2024 了办事慢,手续杂,不方便,出差错也是让我们有点抓狂,可能是对于外国人是如此,现在也都习惯了。还有一点是我个人主观的感受,很难融入有归属感,语言和文化上没有共鸣。在工作和学习正式场合之外,还是黑人和黑人玩,华人和华人玩,印度人和印度人玩。</p>
<p>科研:华人导师的工作风格和在国内差不多,让我有一种在国内读书的感觉。</p>
<!-- 城市 -->
<div style="display: flex; justify-content: space-between">
<figure style="width: 54.5%">
<img src="../images/yangguohao-story/image-4.jpg" alt="市中心" />
<figcaption>圣安东尼奥市中心景点(river walk)的节日庆典</figcaption>
</figure>
<figure style="width: 42%">
<img src="../images/yangguohao-story/image-5.jpg" alt="车展" />
<figcaption>市中心的老爷车展(为什么会有☠️)</figcaption>
</figure>
</div>
<blockquote>
<p>笔者注✍️:水獭哥说德州有种印象里典型的西部片的感觉,很糙哈哈哈</p>
</blockquote>
</li>
<li>
<p><strong>德州民风强悍么[旺柴]?有没有去看过马刺队比赛?</strong></p>
<p><strong>杨国浩:</strong> 生活中平是都还好,有两点:一是这里的人很喜欢大皮卡,开车的时候很猛。二是看过人穿的像个牛仔,腰间带把枪在餐厅吃烤肉。打算 11 月去看马刺和湖人的比赛。</p>
</li>
<li>
<p><strong>在东北、北京、广东和德州等多地求学、工作,你有没有特别喜欢的城市?有没有一些令人难忘的事情(比如广东大蟑螂)?</strong></p>
<p><strong>杨国浩:</strong> 还是喜欢深圳,除了房价,其他我都挺满意的。我也碰到过会飞的广东大蟑螂,洗澡的时候飞进来,我没带眼镜听到蟑螂翅膀煽动的声音我以为是热水器的噪音。杀死以后包着纸扔马桶居然冲不下去,蟑螂又浮上来了。</p>
</li>
<li>
<p><strong>聊聊开源吧~水獭哥你参加了很多飞桨开源活动,当初是什么机缘接触到飞桨的呀?</strong></p>
<p><strong>杨国浩:</strong> 第一次接触飞桨好像是 2020 年 7 月的暑假毕然老师的零基础实践深度学习的课程,然后就是黑客松第一届的比赛。</p>
</li>
<li>
<p><strong>可以分享一下哪些你印象比较深的飞桨开源项目?这些项目对你的个人成长/职业生涯带来了哪些影响?飞桨以外的开源项目也可以讲(狗头)</strong></p>
<p><strong>杨国浩:</strong> 基本上参与过飞桨的开源项目我都印象深刻,算子开发、Python 前端的 jit、还有 PIR 的项目。除此之外贡献过一个 <a href="https://github.com/jcmgray/autoray" target="_blank" rel="noreferrer">autoray</a> 的项目,这个 Python libraries 也是被 Pennylane 使用的(有做过量子计算的应该知道 Pennylane)。我一直都有这样的想法,当别人用到这个东西的时候,不论有多少人用,我能告诉别人我做了其中的一部分,哪怕是再小的一点工作都让我有成就感。</p>
</li>
<li>
<p><strong>对飞桨开源社区的哪些人印象比较深刻?(听说涛姐好像还给你写过推荐信)</strong></p>
<p><strong>杨国浩:</strong> 一众大佬,每次各种各样的活动经常都能看到几个熟悉的 Github ID。平时还是和孙哥和涛姐沟通的比较多。</p>
<!-- 城市 -->
<div style="display: flex; justify-content: center">
<figure style="width: 100%">
<img src="../images/yangguohao-story/image-6.jpg" alt="cikm" />
<figcaption>在博伊西作为 Paddle 志愿者参加 CIKM 会议(右一)</figcaption>
</figure>
</div>
</li>
<li>
<p><strong>未来有什么个人规划吗?除了科研和工作,有没有什么想去体验的事或计划?</strong></p>
<p><strong>杨国浩:</strong> 短期就是毕业工作,如果能留就尽量留在这儿。有个旅游 up 主蕾儿乔什,我希望工作后再攒点钱去旅游,多走一些地方。</p>
</li>
<li>
<p><strong>在这一路上,身边的亲人朋友有没有给你特别的支持</strong></p>
<p><strong>杨国浩:</strong> 我最感恩的是爱人家人都没有给我什么特别大压力,让我能够到处折腾。即便最后我可能又瞎折腾了,他们都无条件支持我。</p>
</li>
<li>
<p><strong>最后给我们社区的开发者说几句话吧~</strong></p>
<p><strong>杨国浩:</strong> 希望大家都能在自己的道路上多折腾,无论是开源,工作,学习,生活。</p>
</li>
</ol>
<h2 id="三、两分钟快问快答" tabindex="-1">三、两分钟快问快答 <a class="header-anchor" href="#三、两分钟快问快答" aria-label="Permalink to "三、两分钟快问快答"">​</a></h2>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
你的 mbti 是?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
INFP
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
此时此刻此分钟此秒最喜欢的兴趣爱好是哪个?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
打游戏
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
想去健身房还是宅家打游戏?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
宅家打游戏
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
喜欢猫还是狗?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
狗
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
早起还是夜猫子?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
夜猫子
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
最常去的美国超市是哪家?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
HEB
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
博士生活中最离不开的工具是什么?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
ChatGPT
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
更喜欢圣安东尼奥的夏天还是深圳的冬天?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
喜欢圣安的夏天
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
中餐还是西餐?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
中餐
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
写码时更喜欢安静还是听音乐?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
安静
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
出门最常带的三样东西是?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
车钥匙、家钥匙和钱包
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
如果不做程序员/科研,最想尝试的职业是?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
在美国想去开大卡车或者任何开车送货送东西的工作
</Message>
</MessageBox>
<blockquote>
<p>笔者注✍️:必须给水獭哥推荐一款游戏——《欧洲卡车模拟》</p>
</blockquote>
<h2 id="写在最后-💡" tabindex="-1">写在最后 💡 <a class="header-anchor" href="#写在最后-💡" aria-label="Permalink to "写在最后 💡"">​</a></h2>
<p><strong>【开源江湖闲聊录】</strong> 是一项专门为 Paddle 社区的开发者打造的特色访谈栏目 📚。在这里,我们邀请到每一位别具一格且富有热情的开发者,通过文字或语音的方式进行深入采访 🎙️,探索并展现他们背后独一无二的故事,将他们的经历、见解和创意整理成精彩内容,呈现给整个社区。</p>
<p>如果你有兴趣对社区的开发者进行采访,可以联系孙师傅,<strong>急缺助手!</strong></p>
]]></description>
<content:encoded><![CDATA[<p>“圣安东尼奥这个地方太无聊了,我更想去纽约那样的大城市看看。”一位与杨国浩同堂上课的本科生说道。而此时,刚刚跨越半个地球来到 University of Texas 攻读 PhD 的杨国浩,却在这片陌生的土地上,开启了他新的探索旅程。</p>
<!-- more -->
<!-- 导入聊天框功能 -->
<!-- 导入聊天框功能 -->
<h2 id="一、前言" tabindex="-1">一、前言 <a class="header-anchor" href="#一、前言" aria-label="Permalink to "一、前言""></a></h2>
<p>杨国浩,一位早期加入飞桨 PaddlePaddle 社区的资深开发者,他的故事充满了探索和突破。笔者与国浩结缘,始于一次社区任务 <a href="https://github.com/PaddlePaddle/community/blob/master/pfcc/call-for-contributions/docs/Call_For_Tutorials.md" target="_blank" rel="noreferrer">[Call for Contribution] Tutorials for PaddlePaddle</a> ,旨在推动更多基于飞桨的应用实践案例的建设。当时,国浩以微信昵称“水獭 Lutra”活跃于社区中,写了很多 CV 套件的案例,笔者因此亲切地称他为“水獭哥”。</p>
<p>初识水獭哥,只觉得他是技术过硬、颇具实力的一名开发者,而随着交流的深入,才逐渐揭开他丰富多彩的背景。水獭哥的求学与职业历程横跨多个领域,从化学到力学,再到生成式人工智能,他以深厚的学术功底和敏锐的洞察力,不断突破自我。从东北的寒冬到深圳的繁华,再到德州的广袤,他一路走来的脚步,不仅记录着技术探索的轨迹,也散发着对生活的热忱与追求。</p>
<p>这次采访,恰好让我们走近了 Paddle 社区一位开发者的独特人生。通过他的故事,让我们感受到了探索的乐趣和坚持的力量,也希望这样的经历能够激励更多开发者勇敢踏上属于自己的追梦之旅。</p>
<h2 id="二、采访内容" tabindex="-1">二、采访内容 <a class="header-anchor" href="#二、采访内容" aria-label="Permalink to "二、采访内容""></a></h2>
<ol>
<li>
<p><strong>介绍一下自己吧,水獭兄!</strong></p>
<p><strong>杨国浩:</strong> 本人男,27,现在在德州圣安东尼奥读博。兴趣爱好是样样通,样样松:学过书法,钢琴,电子琴,游泳,足球,拳击,健身(上过课,报过班,有经过半年及以上的系统训练),喜欢听歌,电子游戏,羽毛球,台球,脱口秀(曾经很喜欢或者花了很多时间在这上面事情)。还有好多的东西我都曾在某一段时间非常喜欢,后面又因为各样的原因没在做了,属于一分钟热度了。</p>
</li>
<li>
<p><strong>看到你本科学化学,到研究生学力学,再最终到读博选择生成式 AI 方向,可以讲讲这其中的心路历程吗?是什么让你做出了这样的选择?(还是说万物皆可转码😏)</strong></p>
<p><strong>杨国浩:</strong> 一开始高考报志愿的时候我本来打算学物联网的,我父亲告诉我有个堂哥在读化学博士他觉得读化学也挺好的,就把这个志愿填在最后。当初我觉得应该不会录上,没想到最后被录取了。本科的四年也一直处于不想读了和干一行爱一行之间纠结内耗。最后想读研的时候换方向,跨考个研究生担心自己考不上,想走一个折中的路子,找了个计算化学的方向。</p>
<blockquote>
<p>笔者注✍️:担心考不上,于是选择了考北大,这就是大佬的自信嘛</p>
</blockquote>
<p>考上了以后发现做的第一性原理的计算。那时候其实已经有 AI4Science 类似的论文了,各种原因我没能做成这个方向。工作的时候又选择做 AI + 量子计算挺好的,而且量子计算中的很多理论其实是和第一性原理计算是相通的,可是量子计算的前景短期内不是那么明朗。博士的时候我就决定做纯 AI 就好了。自己的想法状态总是随着自己,随着周围的事情,随着大环境时刻摇摆,时刻变化,所以回头看自己做了很多奇奇怪怪自己都没有办法理解的选择是一两句话说不清楚的。</p>
</li>
<li>
<p><strong>从化学到深度学习这样跨学科的学习过程中,有没有什么建议或者经验可以分享给社区的?</strong></p>
<p><strong>杨国浩:</strong> 这几年的 ACM Gordan Bell prize 我查了下都是颁给在化学、量子计算、材料领域。今年的诺贝尔生物和化学颁给的是 AI。AI 和其他学科的交叉融合是一定的趋势,如果在化学领域的同学们可以两手抓。</p>
</li>
<li>
<p><strong>研究生毕业之后,你在深圳的某科技子公司(公司名需要打码嘛)短暂工作了一年,可以简单讲讲吗?之后为什么又选择去了美国读博呀?</strong></p>
<p><strong>杨国浩:</strong> 那时候就已经有出国读书的打算,想着随便找份工作干就好了。在公司还碰到了一个也在百度量子计算研究所实习过的同学。如果不考虑其他的,工作那段时间做的事情我认为也挺有成就感。后面公司因为资金问题裁员,我也一直想去读书,刚好就迈出这一步,恰好在我和现在这个导师面试的同一天通知我。</p>
</li>
<li>
<p><strong>你夫人也跟你一起在美国吗?</strong></p>
<p><strong>杨国浩:</strong> 是的,也一起在美国。不想异地,找学校的时候也有这个考虑,想着要来就一起来,如果有一个人不能来就不去了。</p>
<!-- 大学 -->
<div style="display: flex; justify-content: space-between">
<figure style="width: 34%">
<img src="../images/yangguohao-story/image-1.jpg" alt="大学小路" />
<figcaption>大学附近的小路</figcaption>
</figure>
<figure style="width: 28.5%">
<img src="../images/yangguohao-story/image-2.jpg" alt="鹿" />
<figcaption>学校里不怕人的头铁🦌</figcaption>
</figure>
<figure style="width: 34%">
<img src="../images/yangguohao-story/image-3.jpg" alt="学校操场" />
<figcaption>学校操场</figcaption>
</figure>
</div>
<blockquote>
<p>笔者注✍️:水獭哥学校附近似乎很原生态,路两边经常会有松鼠、小浣熊...被撞死的尸体</p>
</blockquote>
</li>
<li>
<p><strong>现在在美国的日常生活是怎样的?在生活 or 文化 or 科研上,又发生过一些让你感觉印象比较深的事吗?或者说和国内反差感比较大的事?</strong></p>
<p><strong>杨国浩:</strong> 城市:第一次下飞机看到的圣安东尼奥和国内的三线城市相比,城市规划和建设都差的好多,但是又很符合我对美国中西部城市的那种刻板印象,看久了也习惯了。其他城市可能不一样(例如博伊西,去了以后发现给人的感受不太一样)。</p>
<p>交通:日常生活要开车,公共交通基本等于无,全美第七大城市没有地铁,公交站像摆设一样。市中心的流浪汉不少。夏天的德州特别热,他们聚集在加油站和公交总站的阴凉处乘凉。曾经我开车去加油看到这一幕我不敢下车加油,直接拐出去了。</p>
<p>物价:德州的物价油价比其他州便宜,在大超市买东西量特别大,平均算下来物价我感觉跟国内的深圳上海差不多甚至更便宜。</p>
<p>其他的:这里的人做事很有“松弛感”,以前老说国内办事慢,踢皮球,来了这里发现 2024 了办事慢,手续杂,不方便,出差错也是让我们有点抓狂,可能是对于外国人是如此,现在也都习惯了。还有一点是我个人主观的感受,很难融入有归属感,语言和文化上没有共鸣。在工作和学习正式场合之外,还是黑人和黑人玩,华人和华人玩,印度人和印度人玩。</p>
<p>科研:华人导师的工作风格和在国内差不多,让我有一种在国内读书的感觉。</p>
<!-- 城市 -->
<div style="display: flex; justify-content: space-between">
<figure style="width: 54.5%">
<img src="../images/yangguohao-story/image-4.jpg" alt="市中心" />
<figcaption>圣安东尼奥市中心景点(river walk)的节日庆典</figcaption>
</figure>
<figure style="width: 42%">
<img src="../images/yangguohao-story/image-5.jpg" alt="车展" />
<figcaption>市中心的老爷车展(为什么会有☠️)</figcaption>
</figure>
</div>
<blockquote>
<p>笔者注✍️:水獭哥说德州有种印象里典型的西部片的感觉,很糙哈哈哈</p>
</blockquote>
</li>
<li>
<p><strong>德州民风强悍么[旺柴]?有没有去看过马刺队比赛?</strong></p>
<p><strong>杨国浩:</strong> 生活中平是都还好,有两点:一是这里的人很喜欢大皮卡,开车的时候很猛。二是看过人穿的像个牛仔,腰间带把枪在餐厅吃烤肉。打算 11 月去看马刺和湖人的比赛。</p>
</li>
<li>
<p><strong>在东北、北京、广东和德州等多地求学、工作,你有没有特别喜欢的城市?有没有一些令人难忘的事情(比如广东大蟑螂)?</strong></p>
<p><strong>杨国浩:</strong> 还是喜欢深圳,除了房价,其他我都挺满意的。我也碰到过会飞的广东大蟑螂,洗澡的时候飞进来,我没带眼镜听到蟑螂翅膀煽动的声音我以为是热水器的噪音。杀死以后包着纸扔马桶居然冲不下去,蟑螂又浮上来了。</p>
</li>
<li>
<p><strong>聊聊开源吧~水獭哥你参加了很多飞桨开源活动,当初是什么机缘接触到飞桨的呀?</strong></p>
<p><strong>杨国浩:</strong> 第一次接触飞桨好像是 2020 年 7 月的暑假毕然老师的零基础实践深度学习的课程,然后就是黑客松第一届的比赛。</p>
</li>
<li>
<p><strong>可以分享一下哪些你印象比较深的飞桨开源项目?这些项目对你的个人成长/职业生涯带来了哪些影响?飞桨以外的开源项目也可以讲(狗头)</strong></p>
<p><strong>杨国浩:</strong> 基本上参与过飞桨的开源项目我都印象深刻,算子开发、Python 前端的 jit、还有 PIR 的项目。除此之外贡献过一个 <a href="https://github.com/jcmgray/autoray" target="_blank" rel="noreferrer">autoray</a> 的项目,这个 Python libraries 也是被 Pennylane 使用的(有做过量子计算的应该知道 Pennylane)。我一直都有这样的想法,当别人用到这个东西的时候,不论有多少人用,我能告诉别人我做了其中的一部分,哪怕是再小的一点工作都让我有成就感。</p>
</li>
<li>
<p><strong>对飞桨开源社区的哪些人印象比较深刻?(听说涛姐好像还给你写过推荐信)</strong></p>
<p><strong>杨国浩:</strong> 一众大佬,每次各种各样的活动经常都能看到几个熟悉的 Github ID。平时还是和孙哥和涛姐沟通的比较多。</p>
<!-- 城市 -->
<div style="display: flex; justify-content: center">
<figure style="width: 100%">
<img src="../images/yangguohao-story/image-6.jpg" alt="cikm" />
<figcaption>在博伊西作为 Paddle 志愿者参加 CIKM 会议(右一)</figcaption>
</figure>
</div>
</li>
<li>
<p><strong>未来有什么个人规划吗?除了科研和工作,有没有什么想去体验的事或计划?</strong></p>
<p><strong>杨国浩:</strong> 短期就是毕业工作,如果能留就尽量留在这儿。有个旅游 up 主蕾儿乔什,我希望工作后再攒点钱去旅游,多走一些地方。</p>
</li>
<li>
<p><strong>在这一路上,身边的亲人朋友有没有给你特别的支持</strong></p>
<p><strong>杨国浩:</strong> 我最感恩的是爱人家人都没有给我什么特别大压力,让我能够到处折腾。即便最后我可能又瞎折腾了,他们都无条件支持我。</p>
</li>
<li>
<p><strong>最后给我们社区的开发者说几句话吧~</strong></p>
<p><strong>杨国浩:</strong> 希望大家都能在自己的道路上多折腾,无论是开源,工作,学习,生活。</p>
</li>
</ol>
<h2 id="三、两分钟快问快答" tabindex="-1">三、两分钟快问快答 <a class="header-anchor" href="#三、两分钟快问快答" aria-label="Permalink to "三、两分钟快问快答""></a></h2>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
你的 mbti 是?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
INFP
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
此时此刻此分钟此秒最喜欢的兴趣爱好是哪个?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
打游戏
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
想去健身房还是宅家打游戏?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
宅家打游戏
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
喜欢猫还是狗?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
狗
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
早起还是夜猫子?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
夜猫子
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
最常去的美国超市是哪家?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
HEB
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
博士生活中最离不开的工具是什么?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
ChatGPT
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
更喜欢圣安东尼奥的夏天还是深圳的冬天?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
喜欢圣安的夏天
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
中餐还是西餐?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
中餐
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
写码时更喜欢安静还是听音乐?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
安静
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
出门最常带的三样东西是?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
车钥匙、家钥匙和钱包
</Message>
</MessageBox>
<MessageBox>
<Message name="孙师傅" github="sunzhongkai588">
如果不做程序员/科研,最想尝试的职业是?
</Message>
</MessageBox>
<MessageBox>
<Message type="right" name="水獭哥" github="yangguohao">
在美国想去开大卡车或者任何开车送货送东西的工作
</Message>
</MessageBox>
<blockquote>
<p>笔者注✍️:必须给水獭哥推荐一款游戏——《欧洲卡车模拟》</p>
</blockquote>
<h2 id="写在最后-💡" tabindex="-1">写在最后 💡 <a class="header-anchor" href="#写在最后-💡" aria-label="Permalink to "写在最后 💡""></a></h2>
<p><strong>【开源江湖闲聊录】</strong> 是一项专门为 Paddle 社区的开发者打造的特色访谈栏目 📚。在这里,我们邀请到每一位别具一格且富有热情的开发者,通过文字或语音的方式进行深入采访 🎙️,探索并展现他们背后独一无二的故事,将他们的经历、见解和创意整理成精彩内容,呈现给整个社区。</p>
<p>如果你有兴趣对社区的开发者进行采访,可以联系孙师傅,<strong>急缺助手!</strong></p>
<hr>
]]></content:encoded>
</item>
<item>
<title><![CDATA[飞桨&北航启航计划显成效:8 周 426 个 PR 的产学研新探索]]></title>
<link>https://pfcc.blog/posts/buaa-starter</link>
<guid>https://pfcc.blog/posts/buaa-starter</guid>
<pubDate>Wed, 27 Nov 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<p>真实项目历练+开源实践,打造高校人才培养标杆。</p>
<!-- more -->
]]></description>
<content:encoded><![CDATA[<p>真实项目历练+开源实践,打造高校人才培养标杆。</p>
<!-- more -->
<hr>
<p>面对产业界对掌握 AI 知识与技能的复合型人才需求的持续攀升,今年 7 月至 9 月,飞桨联合北京航空航天大学人工智能学院,试点将“开源贡献”与“校企合作实习”结合的实践人才培养新模式。首期优选包含“强基计划”等 15 位优秀学生,开展为期 8 周的线下线上相结合的「启航计划」实习项目,参与飞桨一线工作,在参与真实项目中锻造自己的 AI 科研与实战能力。</p>
<p>在长达 8 周的实习中,15 位同学累计合入 426 个 PR,平均每人 28.4 个 PR,极大提升了自身的代码实践能力。实习结束后,2 名同学正式加入百度长期实习,3 名同学加入飞桨核心框架贡献者俱乐部(PFCC)长期参与开源贡献。本次飞桨&北航「启航计划」实习项目,充分展示了校企合作在提升学生实践能力方面的巨大潜力,百度飞桨期望通过此类深度合作,不断探索与高校共同培育 AI 人才的新路径。
<img src="./../images/BUAA-qhjh3/leadervisit.png" alt="实习期间学院领导来访百度"></p>
<h2 id="硬核的实习生感悟" tabindex="-1">硬核的实习生感悟 <a class="header-anchor" href="#硬核的实习生感悟" aria-label="Permalink to "硬核的实习生感悟""></a></h2>
<p>在飞桨实习期间同学们都有较深的体会,下面是答辩前三名同学与我们分享的感悟:</p>
<h3 id="_1-阮一洲" tabindex="-1">1.阮一洲 <a class="header-anchor" href="#_1-阮一洲" aria-label="Permalink to "1.阮一洲""></a></h3>
<blockquote>
<p>北航人工智能学院 21 级 77 班 信息与计算科学(强基计划)专业直博生</p>
</blockquote>
<p>在担任百度飞桨开源共建实习生期间,我专注于 PIR 专项团的开发任务,着重学习了 IR 和 PIR 的运行机制,为原 IR 下的单测适配 PIR 进行修复和迁移。除此之外,我优化了大量的报错信息,学习了有关 PADDLE ENFORCE 宏和 CHECK 宏的使用规则,使得报错信息更加清晰完备。我还参与了 Ruff 代码风格修改的相关工作,为飞桨运行的 python 环境进行了预升级。我深刻地体会到了企业中团队协作的重要性,感受到了在百度的强运算能力的开发机和庞大知识库的支持下带来的工作效率的飞升,也感受到了国产深度学习框架飞桨的便捷高效。在未来的学习、科研乃至于工作生涯中,我会继续使用飞桨和其他深度学习框架来提高自己的开发效率。</p>
<h3 id="_2-奚嘉文" tabindex="-1">2.奚嘉文 <a class="header-anchor" href="#_2-奚嘉文" aria-label="Permalink to "2.奚嘉文""></a></h3>
<blockquote>
<p>北航人工智能学院 21 级 77 班 信息与计算科学(强基计划)专业直博生,目前转入深度学习技术平台部-基础框架研发组实习</p>
</blockquote>
<p>“我在实习期间学习了百度飞桨基础知识与工作流程,包括静态图、动态图模式的知识,CINN 符号化推导代码开发流程等。公司的实习更加系统、严谨,同时提 PR 和 review 的流程也是学校实习所没有的。在这段实习期间,我不仅仅提升了自己的代码能力,通过查找报错栈堆,逐层定位问题;也认识到了在解决问题的过程中,要积极与同学和部门导师沟通,这样才能高效地解决工作中遇到的问题。”</p>
<h3 id="_3-刘煦东" tabindex="-1">3.刘煦东 <a class="header-anchor" href="#_3-刘煦东" aria-label="Permalink to "3.刘煦东""></a></h3>
<blockquote>
<p>北航人工智能学院 21 级 214211 班学生,现保研到北航人工智能学院</p>
</blockquote>
<p>“我曾在飞桨实习期间深入学习了深度学习框架飞桨的相关技术和应用。飞桨实习提供了更为丰富和深入的技术实践机会。飞桨基础框架团队共同开发的经历不仅深化了我对深度学习技术的理解,还让我参与了多个关键项目的开发与优化——PIR 模式下单测问题修复与适配、CINN 编译器符号推导扩量、报错日志体系优化以及引入 Ruff 作为 Python 端代码风格检查/自动修复工具等等,让我在技术、团队协作和问题解决能力上都取得了显著进步。</p>
<h2 id="周密的学生实习全过程管理" tabindex="-1">周密的学生实习全过程管理 <a class="header-anchor" href="#周密的学生实习全过程管理" aria-label="Permalink to "周密的学生实习全过程管理""></a></h2>
<p>飞桨为北航「启航计划」制定了详细的实习计划,多部门协同,保障实习计划的完美落地。该计划包括硬核产业真实课题、百度工程师全程培训与指导、实习任务体系化设计与科学的过程管理、生活关怀、结营答辩与激励等,确保每位同学都能在实习过程中有所成长与收获。</p>
<ol>
<li>硬核产业真实课题本期实习所有任务均来源于飞桨真实产业需求,同学们任务完成十分出色,对飞桨 3.0 发版做出了杰出贡献:</li>
</ol>
<ul>
<li><strong>初级难度任务:</strong> 共完成了 2986 个报错优化任务、254 个 PEP585 标准集合泛型支持升级任务、406 个 Ruff 新 rule 引入任务、233 个 TypeHint 类型标注任务;</li>
<li><strong>中高难度任务:</strong> 共完成了 228 个编译器符号化扩量推全任务和 74 个 PIR 单测修复任务。</li>
</ul>
<ol start="2">
<li>
<p>百度工程师全程培训与指导实习同学均由研发亲自带队指导,累计开展了 8 次周会与 3 次集体技术培训,由浅入深和循序渐进地为同学们讲授飞桨的相关知识和技术要点,注重学生们的能力成长与知识水平提升;并设立答疑通道,确保任务完成中的卡点得到及时疏解。
<img src="./../images/BUAA-qhjh3/groupdiscussion.png" alt="小组讨论"></p>
</li>
<li>
<p>实习任务体系化设计与科学的过程管理飞桨为实习同学制定了难度层次递进的实习计划和对应的考核标准,建立个人日报、个人周报和例会分享制度,引导实习同学定时汇报工作进度,及时反思自己的表现,关注自己在哪些方面存在不足,并明确还有哪些进步的空间。飞桨期望通过这样的汇报和反思,能够激发实习同学的自我驱动力,促进个人成长。
<img src="./../images/BUAA-qhjh3/design.png" alt="小组讨论">
<img src="./../images/BUAA-qhjh3/weekly.png" alt="周会"></p>
</li>
<li>
<p>学院领导来厂看望,举办生活工作专题座谈会🎉
<img src="./../images/BUAA-qhjh3/lifework.png" alt="座谈会"></p>
</li>
<li>
<p>来百度胖 N 斤系列🍕
<img src="./../images/BUAA-qhjh3/yummy.png" alt="吃吃喝喝"></p>
</li>
<li>
<p>欢乐的结营答辩与开源讲座🙋🏻♀️
实习结束后,组织实习同学进行结营答辩,向学校和公司展示个人实习成果,激励实习同学勇争先锋。
<img src="./../images/BUAA-qhjh3/camping.png" alt="结营啦"></p>
</li>
<li>
<p>百度飞桨框架产品负责人张军老师做开源讲座
<img src="./../images/BUAA-qhjh3/junge.png" alt="张军老师"></p>
</li>
</ol>
<h2 id="持续合作-共绘拔尖人才培养蓝图" tabindex="-1">持续合作 共绘拔尖人才培养蓝图 <a class="header-anchor" href="#持续合作-共绘拔尖人才培养蓝图" aria-label="Permalink to "持续合作 共绘拔尖人才培养蓝图""></a></h2>
<p>百度飞桨与北京航空航天大学在课程共建、竞赛联办等方面有较为深厚的合作基础。2023 年与北京航空航天大学联合成功申请国家人工智能产教融合创新平台。以本次实习生计划为起点,飞桨将与北航进一步共探开源人才培养融入学分课、飞桨领航团建设、学生实习及硕博人才一体培养等多种人才培养新方式,促进产学研的深度融合。在未来,飞桨将继续通过持续扎实的合作,携手高校,共同培育 AI 人才,真实赋能学生的能力水平提升。
<img src="./../images/BUAA-qhjh3/visiting.png" alt="参访北航人工智能学院"></p>
<h2 id="启航计划往期回顾" tabindex="-1">启航计划往期回顾 <a class="header-anchor" href="#启航计划往期回顾" aria-label="Permalink to "启航计划往期回顾""></a></h2>
<p>往期启航计划,在爱好开源的开发者的热情参与下,取得了丰富的成果:</p>
<ol>
<li>前三期线上集训营共有 48 位营员合入了超过 270 个 PR。</li>
<li>前三期线上集训营共有 36 名开发者通过集训项目成为飞桨开源社区新的开源贡献者。</li>
<li>前三期线上集训营共有 42 名营员成功通过考核、顺利结营,数名优秀营员加入百度进行正式实习,或者通过护航计划参与飞桨开源贡献。</li>
<li>第三期启航计划集训营与北京航空航天大学合作,招募 15 名优秀同学加入百度开展为期 8 周的“线上+线下”混合实习实训,累积已合入 426 个 PR,为飞桨 3.0 发版做出了杰出贡献。
<img src="./../images/BUAA-qhjh3/online.png" alt="热热闹闹线上讨论">
不要错过这个提升技术、结识同行、赢取奖励的好机会!让我们携手共创开源未来,马上行动起来吧!期待与你在开源的世界中相遇!🤗</li>
</ol>
<p>联系我们请戳:[email protected]</p>
<p>以下是附件部分啦~</p>
<blockquote>
<p>⭐️ <a href="https://github.com/PaddlePaddle/Paddle/pulls?q=is%3Apr+label%3A%22HappyOpenSource+Pro%22+BUAA+is%3Aclosed" target="_blank" rel="noreferrer">附本次实习 Github PR 总链接</a></p>
<p>⭐️ 同学代表 PR:<a href="https://github.com/PaddlePaddle/Paddle/pulls?q=is%3Apr+author%3AMarcusRYZ+is%3Aclosed" target="_blank" rel="noreferrer">阮一洲</a>、<a href="https://github.com/PaddlePaddle/Paddle/pulls?q=is%3Apr+author%3Acrazyxiaoxi+is%3Aclosed" target="_blank" rel="noreferrer">奚嘉文</a>、<a href="https://github.com/PaddlePaddle/Paddle/pulls?q=is%3Apr+author%3Atlxd+is%3Aclosed+" target="_blank" rel="noreferrer">刘煦东</a></p>
</blockquote>
]]></content:encoded>
</item>
<item>
<title><![CDATA[百度“与你一起定义飞桨的未来”主题活动走进浙江大学软件学院成功举办]]></title>
<link>https://pfcc.blog/posts/zju-event</link>
<guid>https://pfcc.blog/posts/zju-event</guid>
<pubDate>Tue, 26 Nov 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<p>为深入探讨、推动开源人才培养,助力开源生态繁荣向前,10 月 29 日下午,百度“与你一起定义飞桨的未来”主题活动,作为 <a href="https://mp.weixin.qq.com/s/i05v5HunUogrn0de7SqivA" target="_blank" rel="noreferrer">“源”来在“浙”里|开源企业走进校园系列活动</a> 之一,在浙江大学软件学院成功举办。</p>
<!-- more -->
]]></description>
<content:encoded><![CDATA[<p>为深入探讨、推动开源人才培养,助力开源生态繁荣向前,10 月 29 日下午,百度“与你一起定义飞桨的未来”主题活动,作为 <a href="https://mp.weixin.qq.com/s/i05v5HunUogrn0de7SqivA" target="_blank" rel="noreferrer">“源”来在“浙”里|开源企业走进校园系列活动</a> 之一,在浙江大学软件学院成功举办。</p>
<!-- more -->
<hr>
<p>飞桨高级产品经理张晶,高级研发工程师郜廷权,研发工程师陆瑶、王海涛,AI 生态部邵一鸣,产品运营张子彧,美康生物算法工程师、PaddleOCR PMC Chair、飞桨开发者技术专家 PPDE 汪昕,为同学们带来 AI 前沿技术和百度飞桨开源产品及其应用介绍、开源对技术优化的意义、文心一言大模型案例解读等内容。专家们结合自身的经验经历进行分享,内容具备很强的实践性和启发性,助力同学们开启开源之旅。
<img src="./../images/zju-event/all.png" alt="活动讲师合影">
<img src="./../images/zju-event/student.jpg" alt="学生认真听讲"></p>
<h2 id="主题报告" tabindex="-1">主题报告 <a class="header-anchor" href="#主题报告" aria-label="Permalink to "主题报告""></a></h2>
<h3 id="_1-shape-the-future-开源、飞桨与你我" tabindex="-1">1. Shape the future : 开源、飞桨与你我 <a class="header-anchor" href="#_1-shape-the-future-开源、飞桨与你我" aria-label="Permalink to "1. Shape the future : 开源、飞桨与你我""></a></h3>
<p>张晶(百度飞桨高级产品经理 <a href="https://github.com/openvino-book" target="_blank" rel="noreferrer">@openvino-book</a>)重点分享了全球著名开源项目 PaddlePaddle 的前世今后、当前取得的成绩、共建共享的开源精神;以及如何参与飞桨开源社区,如何在共建飞桨的过程中,提升技术、成长自己、共筑未来。
<img src="./../images/zju-event/zhangjing.jpg" alt="百度飞桨高级产品经理张晶"></p>
<h3 id="_2-飞奖多模态大模型套件-paddlemix-分享及应用" tabindex="-1">2. 飞奖多模态大模型套件 PaddleMIX 分享及应用 <a class="header-anchor" href="#_2-飞奖多模态大模型套件-paddlemix-分享及应用" aria-label="Permalink to "2. 飞奖多模态大模型套件 PaddleMIX 分享及应用""></a></h3>
<p>陆瑶(百度飞桨研发工程师 <a href="https://github.com/luyao-cv" target="_blank" rel="noreferrer">@luyao-cv</a>)作了以《飞桨多模态大模型开发套件 PaddleMIX 》为主题的报告。本报告重点介绍了 PaddleMIX 开源建设活动、多模态大模型能力与场景应用、多模态大模型架构演进及特点以及多模态大模型开发套件 PaddleMIX 。报告详细阐述了多模态大模型的核心能力,包括图像理解、文本生成、跨模态互动等功能,并展示了其在各领域的实际应用场景。在架构方面,陆工程师深入分析了多模态大模型的演进历程,重点讨论了不同架构的特点和优势,为开发者选择合适的模型架构提供了参考。PaddleMIX 开发套件的功能特性得到重点展示,包括模型训练、推理部署、性能优化等关键模块。该套件不仅降低了开发门槛,还提供了丰富的预训练模型和示例,有效支持开发者快速构建多模态应用。这次报告展现了百度在多模态大模型领域的技术实力,为推动人工智能技术发展做出了积极贡献。
<img src="./../images/zju-event/luyao.jpg" alt="百度飞桨研发工程师陆瑶"></p>
<h3 id="_3-低代码工具-paddlex-实践应用" tabindex="-1">3. 低代码工具 PaddleX 实践应用 <a class="header-anchor" href="#_3-低代码工具-paddlex-实践应用" aria-label="Permalink to "3. 低代码工具 PaddleX 实践应用""></a></h3>
<p>郜廷权(百度飞桨高级研发工程师 <a href="https://github.com/TingquanGao" target="_blank" rel="noreferrer">@TingquanGao</a>)作了以《低代码工具 PaddleX 实践应用》为主题的报告。报告重点讲解了百度飞桨低代码开发工具 PaddleX ,包括产品设计特点,功能使用等方面。并分享了大模型时代下深度学习落地应用面临的问题,以及 PaddleX 提出的解决方案:低代码开发方式与多模型串联方式。报告体现了百度飞桨在深度学习模型开源建设方面的贡献。
<img src="./../images/zju-event/gaotingquan.jpg" alt="百度飞桨高级研发工程师郜廷权"></p>
<h3 id="_4-从零开始的开源之旅" tabindex="-1">4. 从零开始的开源之旅 <a class="header-anchor" href="#_4-从零开始的开源之旅" aria-label="Permalink to "4. 从零开始的开源之旅""></a></h3>
<p>汪昕(美康生物算法工程师、PaddleOCR PMC Chair、飞桨开发者技术专家 PPDE <a href="https://github.com/GreatV" target="_blank" rel="noreferrer">@GreatV</a>)分享了自己的开源经历,从薅 GitHub 羊毛到成为开源贡献者,从 typo fix 到深入参与开源项目建设,从成为 PaddleOCR Contributor 到成为 Paddle Committer 的参与开源社区的经历。
<img src="./../images/zju-event/greatv.jpg" alt="飞桨开发者技术专家汪昕"></p>
<h3 id="_5-开源让我越来越领先" tabindex="-1">5. 开源让我越来越领先 <a class="header-anchor" href="#_5-开源让我越来越领先" aria-label="Permalink to "5. 开源让我越来越领先""></a></h3>
<p>王海涛(百度飞桨研发工程师 <a href="https://github.com/yulangz" target="_blank" rel="noreferrer">@yulangz</a>)作了以《开源让我越来越领先》为主题的报告。重点介绍了自己在学生生涯中是如何接触到开源,如何参与开源,以及开源带给了自己哪些收获。以自己的切身经历,告诉同学们如何参与开源,为什么要参与开源,激发同学们对开源的兴趣与热情。
<img src="./../images/zju-event/wanghaitao.jpg" alt="百度飞桨研发工程师王海涛"></p>
<h3 id="_6-文心一言与文小言-生成式-ai-的案例解读" tabindex="-1">6. 文心一言与文小言:生成式 AI 的案例解读 <a class="header-anchor" href="#_6-文心一言与文小言-生成式-ai-的案例解读" aria-label="Permalink to "6. 文心一言与文小言:生成式 AI 的案例解读""></a></h3>
<p>张子彧(百度飞桨产品运营 <a href="https://github.com/shiyuasuka" target="_blank" rel="noreferrer">@shiyuasuka</a> )作了《飞桨领航团开学季高校行 AI 科普》为主题的报告。报告讲解了 AI 这门学科的起源发展和目前的主流分类,分享了百度飞桨领航团在高校的布局以及同学们可以利用 AIstudio 开源平台做出怎样的项目。同时重点以文小言为例子为大家介绍提示词工程师的一些技巧并引导同学现场构建智能体。
<img src="./../images/zju-event/zhangziyu.jpg" alt="百度飞桨产品运营张子彧"></p>
<h3 id="写在最后-飞桨开源社区活动介绍" tabindex="-1">写在最后:飞桨开源社区活动介绍 <a class="header-anchor" href="#写在最后-飞桨开源社区活动介绍" aria-label="Permalink to "写在最后:飞桨开源社区活动介绍""></a></h3>
<p>骆涛(百度飞桨资深研发工程师 <a href="https://github.com/luotao1" target="_blank" rel="noreferrer">@luotao1</a>)介绍了飞桨开源社区的活动。我们会不定期走进校园、开展线下 Meetup,线上的启航计划、快乐开源以及进阶的飞桨黑客松。欢迎大家持续关注飞桨的各种活动哦,对于对此有兴趣、愿意贡献力量的开发者,也可以联系 <a href="https://github.com/sunzhongkai588" target="_blank" rel="noreferrer">孙师傅</a>
<img src="./../images/zju-event/luotao.jpg" alt="百度飞桨资深研发工程师骆涛"></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[第二十八期 “CCF 开源高校行”暨“木兰技术开放日”走进北京大学活动成功举办]]></title>
<link>https://pfcc.blog/posts/ccf-pku</link>
<guid>https://pfcc.blog/posts/ccf-pku</guid>
<pubDate>Sun, 17 Nov 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<p>10 月 9 日下午,CCF"开源高校行"第二十八期暨"木兰技术开放日"在北京大学成功举办。</p>
<!-- more -->
]]></description>
<content:encoded><![CDATA[<p>10 月 9 日下午,CCF"开源高校行"第二十八期暨"木兰技术开放日"在北京大学成功举办。</p>
<!-- more -->
<hr>
<p>活动作为北大信科《开源软件技术》课程的特别环节,邀请了四位业界专家带来重磅分享:百度工程师龚少田介绍了飞桨新一代中间表示技术与神经网络编译器,涛思数据联合创始人廖浩均分享了 TDengine 时序数据库的发展历程,SRS 创始人杨成立讲解了开源流媒体服务器的技术创新,中科院计算机网络信息中心高级工程师朱小杰展示了大数据流水线系统πFlow 的应用实践。活动通过专题报告和互动答疑,加深了师生对开源技术的理解,推动了开源文化在高校的传播,为开源人才培养搭建了良好平台。
<img src="./../images/ccf-pku/professerzhou.png" alt="北京大学周明辉教授"></p>
<h2 id="主题报告" tabindex="-1">主题报告 <a class="header-anchor" href="#主题报告" aria-label="Permalink to "主题报告""></a></h2>
<h3 id="_1-飞桨新一代中间表示技术与神经网络编译器" tabindex="-1">1. 飞桨新一代中间表示技术与神经网络编译器 <a class="header-anchor" href="#_1-飞桨新一代中间表示技术与神经网络编译器" aria-label="Permalink to "1. 飞桨新一代中间表示技术与神经网络编译器""></a></h3>
<p>百度工程师龚少田作了以《飞桨新一代中间表示技术与神经网络编译器》为主题的报告(代张军)。本报告重点介绍了知名开源 AI 框架飞桨的前世今生,介绍其技术架构及其跟其他知名 AI 框架的异同,并介绍如何参与飞桨开源社区。
<img src="./../images/ccf-pku/gst.png" alt="百度工程师龚少田"></p>
<h3 id="_2-tdengine-时序数据库及开源参与介绍" tabindex="-1">2. TDengine 时序数据库及开源参与介绍 <a class="header-anchor" href="#_2-tdengine-时序数据库及开源参与介绍" aria-label="Permalink to "2. TDengine 时序数据库及开源参与介绍""></a></h3>
<p>涛思数据联合创始人廖浩均分享报告以《TDengine 时序数据库及开源参与介绍》为题,介绍了时序数据的特点,时序数据库 TDengine 的发展历程及其技术特征、TDengine 开源社区的运行情况,以及参与 TDengine 开源项目的方式。
<img src="./../images/ccf-pku/lhj.png" alt="涛思数据联合创始人廖浩均"></p>
<h3 id="_3-srs-简介和贡献指南" tabindex="-1">3. SRS 简介和贡献指南 <a class="header-anchor" href="#_3-srs-简介和贡献指南" aria-label="Permalink to "3. SRS 简介和贡献指南""></a></h3>
<p>腾讯云工程师杨成立进行了主题为《SRS 简介和贡献指南》的报告,分享了 SRS 项目的基本情况,以及如何参与 SRS 项目。他介绍到 SRS 是一款开源的实时视频服务器,采用 MIT 协议,广泛应用于流媒体领域,支持 RTMP、WebRTC、HLS、SRT 等多种协议,实现高效的协议转换。
<img src="./../images/ccf-pku/ycl.png" alt="腾讯云工程师杨成立"></p>
<h3 id="_4-大数据流水线处理与调度系统πflow" tabindex="-1">4. 大数据流水线处理与调度系统πFlow <a class="header-anchor" href="#_4-大数据流水线处理与调度系统πflow" aria-label="Permalink to "4. 大数据流水线处理与调度系统πFlow""></a></h3>
<p>中国科学院计算机网络信息中心,高级工程师,硕士生导师朱小杰以《大数据流水线处理与调度系统πFlow》为题,介绍了πFlow 功能、特性及如何加入社区。她介绍了复杂流程的大数据处理与分析多依托于流水线系统πFlow 是一款基于分布式计算框架研发的大数据流水线处理与调度系统,实现大数据采集、处理、存储与分析流程化配置、运行与智能监控,提供了 100+的标准化组件,支持面向领域的组件扩展,性能优越,适用于大数据处理与分析场景。
<img src="./../images/ccf-pku/zxj.png" alt="中国科学院计算机网络信息中心,高级工程师,硕士生导师朱小杰"></p>
<h3 id="_5-答疑环节" tabindex="-1">5. 答疑环节 <a class="header-anchor" href="#_5-答疑环节" aria-label="Permalink to "5. 答疑环节""></a></h3>
<p>活动安排了答疑环节,对于同学们的疑问,嘉宾们进行了详细的讲解,使得同学们对开源有更深的理解,对开源社区和开源文化的推广起到了良好的作用。
<img src="./../images/ccf-pku/QA1.png" alt="问答环节">
<img src="./../images/ccf-pku/QA2.png" alt="问答环节">
<img src="./../images/ccf-pku/QA3.png" alt="问答环节">
<img src="./../images/ccf-pku/QA4.png" alt="问答环节">
<img src="./../images/ccf-pku/QA5.png" alt="问答环节"></p>
<p>至此 CCF“开源高校行”第二十八期活动圆满落下帷幕。中国计算机学会开源发展委员会将持续在各高校进行系列活动,欢迎各位专家、老师和同学们积极参加其中。开源活动本身也是一个汇智、传播、分享的过程,相信开源高校行活动在开源专家、老师同学们的支持下会办得越来越好,做出更大的贡献。</p>
<h2 id="写在最后" tabindex="-1">写在最后 <a class="header-anchor" href="#写在最后" aria-label="Permalink to "写在最后""></a></h2>
<p>飞桨开源社区活动一直在进行中哦~~我们会不定期<strong>走进校园、开展线下 Meetup,线上的启航计划、快乐开源以及进阶的飞桨黑客松</strong>。欢迎大家持续关注飞桨的各种活动哦~O(∩_∩)O 哈哈~
对于对此有兴趣、愿意贡献力量的开发者,也可以联系<a href="https://github.com/sunzhongkai588" target="_blank" rel="noreferrer">孙师傅</a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[【睁眼看世界 🌍】|扎克伯克写给开发者的一封信:开源 AI 是未来的前进之路]]></title>
<link>https://pfcc.blog/posts/zuckerberg-letter-post</link>
<guid>https://pfcc.blog/posts/zuckerberg-letter-post</guid>
<pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate>
<description><![CDATA[<p>本篇文章是小扎同志在 Llama 3.1 发布时给所有开发者写的“一封信”,全文都在阐述<strong>开源对于 AI 大模型发展的重要性</strong>。而比较有趣的是,在类似的时间点,我们的厂长李彦宏(Robin)在对外发布会和内网里发表过<strong>截然相反</strong>的观点,即“<strong>开源大模型会越来越落后</strong>”。在这俩种观点的背后,其实也蕴含着中、西方文化的差异,在文章结尾,我会简单聊聊这两种观点的碰撞和思考。</p>
<!-- more -->
]]></description>
<content:encoded><![CDATA[<p>本篇文章是小扎同志在 Llama 3.1 发布时给所有开发者写的“一封信”,全文都在阐述<strong>开源对于 AI 大模型发展的重要性</strong>。而比较有趣的是,在类似的时间点,我们的厂长李彦宏(Robin)在对外发布会和内网里发表过<strong>截然相反</strong>的观点,即“<strong>开源大模型会越来越落后</strong>”。在这俩种观点的背后,其实也蕴含着中、西方文化的差异,在文章结尾,我会简单聊聊这两种观点的碰撞和思考。</p>
<!-- more -->
<hr>
<blockquote>
<p>原文:<a href="https://about.fb.com/news/2024/07/open-source-ai-is-the-path-forward/" target="_blank" rel="noreferrer">https://about.fb.com/news/2024/07/open-source-ai-is-the-path-forward/</a> <br>
✍️ 写于 2024 年 7 月 23 日 <br>
By 马克·扎克伯格,创始人兼 CEO</p>
</blockquote>
<h2 id="开源-ai-是未来的前进之路" tabindex="-1">开源 AI 是未来的前进之路 <a class="header-anchor" href="#开源-ai-是未来的前进之路" aria-label="Permalink to "开源 AI 是未来的前进之路""></a></h2>
<p>在高性能计算的早期阶段,当时大部分科技公司都大力投资于开发自己的闭源版本 Unix。在那个时代,是很难想象可以有其他方法来发展出先进的软件。然而,最终是开源 Linux 脱颖而出获得了广泛的认可 —— 起初是因为它允许开发者可以按自己的想法随意修改其代码,并且更加省钱。而随着时间的推移,它变得更加先进、更加安全,并且拥有一个比任何闭源 Unix 更广泛的生态,能够支持更多功能。如今,Linux 已经成为云计算和大多数移动设备操作系统的行业标准基础——并且我们都受益于其衍生的优秀产品。</p>
<p>我相信人工智能将以类似的方式发展。如今,几家科技公司正在开发领先的闭源模型,但是开源模型正在迅速缩小差距。去年,Llama 2 只能与过时的模型相比较,而在今年,Llama 3 已经能与最先进的模型进行竞争,并且在某些方面处于领先。明年开始,我们预计未来的 Llama 系列模型将成为行业内最先进的模型。但在此之前,Llama 已经在开放性、可修改性和成本效益方面处于领先地位。</p>
<p>今天,我们正在迈向开源人工智能成为行业标准的下一步。我们发布了 Llama 3.1 405B,这是第一个达到业内前沿水平的开源人工智能模型,同时还推出了新的改进版 Llama 3.1 70B 和 8B 模型。相对闭源模型,除了拥有明显更好的性价比之外,405B 模型开源的事实将使其成为进行微调和蒸馏小模型的最佳选择。</p>
<p>除了发布模型,我们还与一系列公司合作,推动更广泛的生态建设。</p>
<ul>
<li>亚马逊、Databricks 和 NVIDIA 正在推出一整套服务,以支持开发者微调和蒸馏他们自己的模型。</li>
<li>像 Groq 这样的初创公司已经为所有新模型构建了低延迟、低成本的推理服务。</li>
<li>模型将在所有主流云厂商服务中可用,包括 AWS、Azure、Google、Oracle 等。</li>
<li>Scale.AI、DELL、德勤等公司已准备好帮助企业部署 Llama,并使用自有数据训练定制模型。</li>
</ul>
<p>随着社区发展和更多公司开发新服务,我们可以共同将 Llama 打造为行业标准,并让 AI 普惠于每个人。</p>
<p>Meta 致力于开源人工智能。稍后我将阐述<strong>为什么我认为开源是最好的开发栈,为什么开源 Llama 对 Meta 有利,以及为什么开源 AI 对世界有益</strong>。同时也正因如此,开源社区将会长期存在。</p>
<h3 id="为什么开源-ai-对开发者有利" tabindex="-1">为什么开源 AI 对开发者有利 <a class="header-anchor" href="#为什么开源-ai-对开发者有利" aria-label="Permalink to "为什么开源 AI 对开发者有利""></a></h3>
<p>当我与全球的开发者、CEO、政府官员交流时,通常会听到几个主题:</p>
<ul>
<li><strong>我们需要训练、微调和蒸馏我们自己的模型。</strong> 每个组织都有不同的需求,不同规模的模型能够最好的满足这些需求,并且这些模型使用他们自己的特定数据进行训练或微调。端侧任务和分类任务需要小的模型,而更复杂的任务则需要更大的模型。现在,你可以使用最先进的 Llama 模型,使用自己的数据继续进行训练,然后将其蒸馏成最合适的模型尺寸——无需我们或任何其他人看到你的数据。</li>
<li><strong>我们需要掌控自己的命运,而不是被一个闭源模型厂商所束缚。</strong> 许多组织不希望依赖他们无法自行运行和控制的模型。他们不希望闭源模型厂商能够更改自己的模型、修改使用条款,甚至完全停止服务。他们也不希望被束缚在拥有模型专属权的某单一云服务厂商中。开源使得生态圈内的公司拥有兼容的工具链,你可以轻松的在他们之间横跳。</li>
<li><strong>我们需要保护我们自己的数据。</strong> 许多组织需要处理敏感的数据,这些数据需要保密,并且不能通过云 API 传输到闭源模型。而其他有些组织仅仅只是不信任闭源模型厂商提供的数据。开源解决了这些问题,你可以在任何地方运行这些模型。另外开源软件由于开发过程更加透明,往往也更加安全,公众也认同这一观点。</li>
<li><strong>我们需要一个高效、可负担得起的模型。</strong> 开发者可以在自己的基础设施上以闭源模型(如 GPT-4o)大约 50% 的成本运行 Llama 3.1 405B 进行推理,无论是在线还是离线推理任务。</li>
<li><strong>我们想投资于一个能长期成为事实标准的生态。</strong> 许多人看到开源模型比闭源模型发展得更快,他们更希望在能够长期带来巨大优势的架构上建立自己的系统。</li>
</ul>
<h3 id="为什么开源-ai-对-meta-有利" tabindex="-1">为什么开源 AI 对 Meta 有利 <a class="header-anchor" href="#为什么开源-ai-对-meta-有利" aria-label="Permalink to "为什么开源 AI 对 Meta 有利""></a></h3>
<p>Meta 的商业模式是为用户建立最佳的体验和服务。为了实现这一目标,我们必须确保自己始终能够获得最先进的技术,并且不会被束缚在竞争对手的闭源生态系统中,这些系统可能会限制我们的产品创新。</p>
<p>我的一个重要经历是,在建设我们的服务时受到了 Apple 平台的诸多限制,从苹果的开发者税,到他们施加的任意规则,再到阻止我们推出的所有产品创新。显然,如果我们能够构建最好的产品,并且竞争对手不进行限制,Meta 和许多其他公司都将能够为用户建设更好的服务。从哲学层面上讲,这正是我如此坚定不移的为下一代 AI 和 AR/VR 领域建立开源生态的主要原因</p>
<p>人们经常问我是否担心开源 Llama 会让我们失去技术优势,但我认为这种担忧忽略了几个重要因素:</p>
<ul>
<li>首先,为了确保我们拥有最先进的技术,并且不会被长期束缚在某一封闭生态里,Llama 需要发展成为一个完整的生态系统,包括开发工具、效率提升、芯片优化和其他集成软件。如果我们是唯一使用 Llama 的公司,这种生态系统就不会发展,我们将不会比当初的闭源 Unix 好到哪去。</li>
<li>其次,我预计 AI 的发展将持续伴随着激烈的竞争,这意味着在当前时点开源某个模型,并不会使我们在推出下一个最佳模型时失去优势。Llama 成为行业标准的路径是一代又一代的保持竞争力、效率和开放性。</li>
<li>第三,Meta 与闭源模型厂商的的关键区别在于,出售 AI 模型的访问权并不是我们的商业模式。<strong>这意味着公开发布 Llama 不会削减公司的收入、可持续性或者投资 research 的能力</strong>,而闭源厂商则完全相反(这也是为什么几家闭源厂商一直在积极游说政府反对开源的原因之一)</li>
<li>最后,Meta 拥有着深耕开源项目的悠久历史和成功经验。通过 Open Compute Project 共享我们的服务器、网络和数据中心设计,以及让供应链标准化了我们的设计,我们节省了数十亿美元。同时我们也受益于开源生态的创新,如 PyTorch、React 以及其他业内领先的开源项目。当我们长期坚持开源的方法时,它始终是对我们有利的。</li>
</ul>
<h3 id="为什么开源-ai-对全世界有利" tabindex="-1">为什么开源 AI 对全世界有利 <a class="header-anchor" href="#为什么开源-ai-对全世界有利" aria-label="Permalink to "为什么开源 AI 对全世界有利""></a></h3>
<p>我坚信在实现 AI 光明前景的过程中,开源是不可或缺的一环。AI 技术相比任何其他现代技术都展现出了更大的潜力,可以提升人类的生产力、创造力和生活质量,加速经济增长,同时推动医学和科学研究领域的进步。而开源将确保全球更多人能够获得 AI 带来的好处和机会,避免权力集中在少数公司手中,使得技术能够更公平、更安全地服务于整个社会。</p>
<p>关于开源 AI 模型的安全性一直存在争论,而我的观点是,开源 AI 将比闭源更安全。我认为政府将会认识到开源是符合他们的自身利益的,因为开源会促进全世界的繁荣和安全。</p>
<p>我对安全性的认知是,我们需要防范两类危害: unintentional and intentional (非故意危害和故意危害)。非故意危害指设计和运行 AI 系统的人没有故意造成伤害的意图,但该系统仍然可能无意中引发一些负面后果。例如,现代 AI 模型可能无意中给出错误的健康建议。或者在未来场景中,有些人担心模型可能会无意中自我复制或过度追求目标,进而对人类造成危害。故意危害则是指恶意使用 AI 模型来造成危害的行为。</p>
<p>值得注意的是,人们对 AI 的担忧主要集中在非故意危害方面——从 AI 系统对数十亿使用者的影响,到人类未来面临的许多真正灾难性的科幻场景。在这方面,开源技术明显是更安全的,因为其系统更加透明,能够经得起更广泛的审查。从历史上看,正是由于这些原因,开源软件在安全性方面表现更为出色。同样,使用像 Llama Guard 这样安全系统的 Llama 模型,可能比闭源模型更安全和可靠。因此,大多数关于开源 AI 安全性的讨论都集中在故意危害上。</p>
<p>我们的安全流程包括严格的测试和红队攻击,以评估我们的模型是否具有造成实质性危害的能力,目的是在发布模型之前减轻风险。由于这些模型是开源的,任何人都可以自行进行测试。我们必须牢记,这些模型是通过互联网上已有的信息进行训练的。因此在考虑危害时,应该从模型造成的危害,是否能够比从 Google 或其他搜索结果中快速获取的信息中造成的危害更大这一点开始。</p>
<p>在思考关于故意危害的问题时,将个人或小规模单位能够做的事情,与像国家等这类拥有大量资源的大型单位能够做的事情区分开来,是非常有帮助的。</p>
<p>未来的某个时刻,个别不法分子可能会利用 AI 模型的智能,从互联网上的信息中制造出全新的危害。在那时,“权力”的平衡将对 AI 安全至关重要。我认为,生活在一个 AI 被广泛部署的世界中会更好,因为这样一来,实力更强的大型机构可以制约小型的不法分子。这种方式与我们在社交网络上管理安全的方式类似——我们更强大的 AI 系统能够识别并阻止那些使用小型 AI 系统的低级别威胁者。更广泛地来看,大型机构大规模部署 AI 将会促进社会的安全和稳定。只要大家都能获得同代的 AI 模型(开源技术有助于实现这一点),拥有更多计算资源的政府和机构就能够对抗那些计算资源较少的不法分子。</p>
<p>接下来的问题是,…… <strong>【请自行批判性阅读该段原文】</strong>。</p>
<p>在你展望未来的机遇时,请记住,当今大多数行业领先的科技公司和科学研究都是建立在开源软件之上的。下一代企业和科学研究也将基于开源 AI,只要我们共同投入其中。这包括刚刚起步的初创企业,以及那些因缺乏资源无法从头开始开发 SOTA AI 的大学和国家。</p>
<p>归根结底,开源 AI 是我们充分利用这项技术、为世界上所有人创造最大经济机遇和安全性的最佳途径。</p>
<h3 id="让我们共同构建这一切" tabindex="-1">让我们共同构建这一切 <a class="header-anchor" href="#让我们共同构建这一切" aria-label="Permalink to "让我们共同构建这一切""></a></h3>
<p>在过去,Meta 是为自身开发这一系列 Llama 模型,然后对外发布,但并未专注于构建更广泛的生态系统。然而在这次发布中,我们采用了不同的方式。我们正在内部组建团队,以支持尽可能多的开发者和合作伙伴使用 Llama,并积极建立合作关系,使生态系统中的更多公司也能够为其客户提供独特的功能。
我相信,Llama 3.1 的发布将成为行业的一个转折点,届时大多数开发者将主要采用开源方案,而这一趋势只会向前加速。我希望你能加入我们,共同推动 AI 的普惠发展,让全世界都能享受到这项技术的益处。</p>
<p>💪,
MZ</p>
<hr>
<h3 id="编者碎碎念" tabindex="-1">编者碎碎念 <a class="header-anchor" href="#编者碎碎念" aria-label="Permalink to "编者碎碎念""></a></h3>
<p>看完小扎同志写的信,再聊聊厂长 Robin 的观点。在此我就不细说具体的理念,而是做个总结和对比。</p>
<p><img src="./../images/zuckerberg-letter-post/zuck_point.jpg" alt="zuck">
<img src="./../images/zuckerberg-letter-post/robin_point.jpeg" alt="robin"></p>
<blockquote>
<p>厂长的公开言论可以看 <a href="https://www.163.com/dy/article/JBSQH9HD0511DSSR.html" target="_blank" rel="noreferrer">https://www.163.com/dy/article/JBSQH9HD0511DSSR.html</a> (随便找的)</p>
</blockquote>
<h4 id="robin-观点-1-论效率-开源模型没法跟闭源模型比" tabindex="-1">Robin 观点 1:论效率,开源模型没法跟闭源模型比 <a class="header-anchor" href="#robin-观点-1-论效率-开源模型没法跟闭源模型比" aria-label="Permalink to "Robin 观点 1:论效率,开源模型没法跟闭源模型比""></a></h4>
<ul>
<li>
<p>论据:闭源(商业)模型由于其共享资源和集中的管理,即通过大规模用户共享资源实现研发和算力成本的分摊,从而能确保 AI 系统持续优化和商业应用上的高效率,因此闭源(商业)模型在高效利用 GPU 和降低推理成本方面更具优势。例如,百度文心大模型每天调用超过 6 亿次,GPU 使用率超过 90%,开源模型是无法达到同样的规模和效率。</p>
<blockquote>
<p>小扎论点:随着时间推移,开源模型的成本效益会逐渐体现。Meta 开源的 Llama 3.1 系列在性能上已经可以与一些闭源模型竞争,并且比闭源模型在微调和蒸馏方面更具灵活性和经济性。开源模型能够建立一个更强大的生态系统,通过与合作伙伴(如 AWS、NVIDIA、Azure 等)紧密合作,将为开发者提供更多工具、资源和灵活性,推动行业标准的建立。</p>
</blockquote>
</li>
</ul>
<h4 id="robin-观点-2-开源美好-的逻辑在大模型时代不成立" tabindex="-1">Robin 观点 2:“开源美好”的逻辑在大模型时代不成立 <a class="header-anchor" href="#robin-观点-2-开源美好-的逻辑在大模型时代不成立" aria-label="Permalink to "Robin 观点 2:“开源美好”的逻辑在大模型时代不成立""></a></h4>
<ul>
<li>
<p>论据:开源的“美好”在大模型时代不再适用,因为在过去,开源系统如 Linux 代表了“免费”和“低成本”,在没有算力的制约下开发者能通过查看源代码不断改进。然而,在大模型时代,关键瓶颈是算力,开源无法免费提供算力来推动发展。因此开源大模型的主要价值体现在科研和教育领域,而不是商业应用中。因为科研需要因为需要搞清楚大模型的工作原理,而在商业应用中闭源模型能够更好地控制成本和效率,从而在市场上占据主导、建立商业优势,高效的算力管理和集中式运营才是未来的发展方向。</p>
<blockquote>
<p>小扎论点:我们不缺钱,开不开源大模型也不会影响我的主营业务,我就是要开源,让我们的模型有更多人用,更多人开发迭代,更多人加入我们的生态,确保自己处于行业领先。</p>
</blockquote>
</li>
</ul>
<h4 id="结论-表面是理念的分歧-但实际上是公司商业策略的差异" tabindex="-1">结论:表面是理念的分歧,但实际上是公司商业策略的差异 <a class="header-anchor" href="#结论-表面是理念的分歧-但实际上是公司商业策略的差异" aria-label="Permalink to "结论:表面是理念的分歧,但实际上是公司商业策略的差异""></a></h4>
<p>可以看到,Robin 更关注商业效率和闭源模型的市场应用,而扎克伯克则看重开源带来的长期生态建设和创新潜力。</p>
<p>往大的说,这两位科技领袖可能也反映了他们对 AI 未来发展的不同理解:Robin 代表着通过集中资源快速迭代获取竞争优势的中国模式,而小扎同志则提倡一种去中心化、开放合作的西方创新生态。</p>
<p>但往小的说,可能最根本的原因,就像小扎同志说的,公开发布 Llama 不会削减 Meta 公司的收入。但对于百度,公开发布开源大模型,可能真的会影响到自己的搜索业务收入。</p>
<hr>
<h2 id="写在最后" tabindex="-1">写在最后 <a class="header-anchor" href="#写在最后" aria-label="Permalink to "写在最后""></a></h2>
<p>【睁眼看世界 🌍】专栏旨在打破知识边界,通过将国际上的优秀文章、会议精华以及高质量学习资料翻译成中文,使得这些宝贵的知识资源能够为广大中文读者所共享,而不是局限于国内的小圈子。</p>
<p>对于对此有兴趣、愿意贡献力量的开发者,也可以联系<a href="https://github.com/sunzhongkai588" target="_blank" rel="noreferrer">孙师傅</a>,一同完善这个栏目,共同促进知识的自由流动和技术的共同进步。</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[项目收官 | 为 Paddle 框架 API 添加类型提示(Type Hints)]]></title>
<link>https://pfcc.blog/posts/type-hints-project</link>
<guid>https://pfcc.blog/posts/type-hints-project</guid>
<pubDate>Sun, 01 Sep 2024 00:00:00 GMT</pubDate>
<content:encoded><![CDATA[<p>【为 Paddle 框架 API 添加类型提示(Type Hints)】的项目总结。</p>
<!-- more -->
<!-- 导入聊天框功能 -->
<p>34 位开发者参与,16 项主任务,337 个子任务,2191 个 API,340+ 个 PR,自 2024 年 4 月起,至 8 月 30 日主体项目完结,近 5 个月 SAN 值归零的夜晚,Type Hints 总归算是有始有终、小有成果,这里就简单回顾与总结一下。</p>
<h2 id="项目介绍" tabindex="-1">项目介绍 <a class="header-anchor" href="#项目介绍" aria-label="Permalink to "项目介绍""></a></h2>
<p>此次项目是第六期飞桨黑客松引入 Fundable Projects 中的一个:<a href="https://github.com/PaddlePaddle/community/blob/master/hackathon/hackathon_6th/%E3%80%90Hackathon%206th%E3%80%91FundableProject%E4%BB%BB%E5%8A%A1%E5%90%88%E9%9B%86.md#%E4%B8%80%E4%B8%BA-paddle-%E6%A1%86%E6%9E%B6-api-%E6%B7%BB%E5%8A%A0%E7%B1%BB%E5%9E%8B%E6%8F%90%E7%A4%BAtype-hints" target="_blank" rel="noreferrer">为 Paddle 框架 API 添加类型提示(Type Hints)</a>。</p>
<blockquote>
<p>Fundable Projects 本身定位具有一定的挑战性,有兴趣的同学可以移步 <a href="https://github.com/PaddlePaddle/Paddle/issues/62908" target="_blank" rel="noreferrer">【Hackathon 6th】Fundable Projects</a></p>
</blockquote>
<p>Python 在 3.5 版本通过 <a href="https://peps.python.org/pep-0484/" target="_blank" rel="noreferrer">PEP 484 – Type Hints</a> 正式规范了「类型提示」功能。之后随着相关规范和工具的逐渐完善,类型提示逐渐成为 Python 代码中的标准实践,如今较新的主流库也基本都提供了类型提示。由于 Python 本身类型高度动态化,类型提示的存在可以帮助开发者更快地了解代码的类型信息,提高代码的可读性和可维护性,结合工具还可以提供静态类型检查,在开发阶段就能发现一些潜在的类型错误。Paddle 框架由于历史原因尚未提供类型提示,本项目希望引入尽可能多的对 Paddle 有利的类型提示。</p>
<p>以一段简单的 Python 代码为例:</p>
<div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0" v-pre=""><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> greeting</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(name):</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> return</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> 'Hello'</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> name</span></span></code></pre>
</div><p>添加上类型提示之后:</p>
<div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0" v-pre=""><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> greeting</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(name: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">) -> </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> return</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> 'Hello'</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> name</span></span></code></pre>
</div><p>正如前文所讲,类型提示功能有诸多好处,如:</p>
<ul>
<li>帮助开发者了解代码类型信息</li>
<li>提高代码的可读性和可维护性</li>
<li>结合工具在开发阶段发现错误</li>
</ul>
<p>而最直观的反映就是,我们在诸如 VSCode 等 IDE 中,能够获取到接口的类型提示,并进行连续推导了:</p>
<!-- typing_ide.png -->
<div style="display: flex; justify-content: center">
<figure style="width: 80%;">
<img src="../images/type-hints-project/typing_ide.png"/>
<figcaption>IDE 中使用类型提示</figcaption>
</figure>
</div>
<p>项目的 RFC <a href="https://github.com/PaddlePaddle/community/pull/858" target="_blank" rel="noreferrer">【Hackathon 6th】为 Paddle 框架 API 添加类型提示(Type Hints)</a> 经过大家讨论之后,将此次项目的目标最终标定为:</p>
<ul>
<li><strong>正确完成 Paddle 公开 API 的类型标注,但不声明 Paddle 类型标注的完备性。</strong></li>
</ul>
<p>这里需要单独说明一下「标注的完备性」。类型标注是个循序渐进的过程,Paddle 是个相对较大且复杂的项目,除了公开 API 之外,还存在较多非公开 API 与 C++ 接口,此次项目无法保证完成以上所有接口的类型标注,故此,不做 Paddle 类型标注的完备性说明。或者,换个说法,如果熟悉 Python 的类型标注和相关工具的使用,那么,此次项目不保证完成 Paddle 这个项目本身通过类型工具的检查,但是,需要保证外部项目使用 Paddle 时,能够正确识别、提示与检查 Paddle 所提供的公开 API。</p>
<p>项目中的任务,以任务模块的角度,分解为:</p>
<ul>
<li><code>_typing</code> 模块的引入</li>
<li>CI 流水线的建设</li>
<li>文档建设</li>
<li>公开 API 的类型标注</li>
</ul>
<p>具体的执行过程,通过 <a href="https://github.com/PaddlePaddle/Paddle/issues/63597" target="_blank" rel="noreferrer">Tracking Issue</a> 跟踪项目进展,分解为:</p>
<ul>
<li>第一阶段的前置任务</li>
<li>第二阶段的代码标注主体任务</li>
<li>第三阶段的补充测试</li>
<li>第四阶段的收尾与总结</li>
</ul>
<h2 id="项目实施" tabindex="-1">项目实施 <a class="header-anchor" href="#项目实施" aria-label="Permalink to "项目实施""></a></h2>
<h3 id="方案总览" tabindex="-1">方案总览 <a class="header-anchor" href="#方案总览" aria-label="Permalink to "方案总览""></a></h3>
<p>Python 官方提出了三种支持类型提示的 <a href="https://typing.readthedocs.io/en/latest/spec/distributing.html#packaging-typed-libraries" target="_blank" rel="noreferrer">包分发方式</a>:</p>
<ul>
<li><code>inline</code>,行内</li>
<li><code>stubs</code>,文件</li>
<li><code>third party</code>,第三方</li>
</ul>
<p>结合 Paddle 项目本身的结构,这里采用 <strong>Inline type annotation + Stub files in package</strong> 的方案实施类型提示,具体为:</p>
<ul>
<li>Python 接口,使用 <code>inline</code> 方式标注</li>
<li>非 Python 接口,提供 <code>stub</code> 标注文件,并打包在 Paddle 中</li>
</ul>
<p>所谓 <code>inline</code> ,是将类型直接标注在源文件的接口定义中,如:</p>
<div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0" v-pre=""><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(x, name</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">None</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">):</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> ...</span></span></code></pre>
</div><p>直接修改接口代码为:</p>
<div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0" v-pre=""><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(x: Tensor, name: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">str</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> |</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> None</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> None</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">) -> Tensor:</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> ...</span></span></code></pre>
</div><p>而有些接口,Paddle 是通过 pybind 或 patch 的方式提供,则需要增加对应的 <code>stub</code> 文件。最基本的,如 <code>Tensor</code> 类,需要提供 <code>tensor.pyi</code> 文件:</p>
<!-- tensor_pyi.png -->
<div style="display: flex; justify-content: center">
<figure style="width: 80%;">
<img src="../images/type-hints-project/tensor_pyi.png"/>
<figcaption>生成 tensor.pyi 文件</figcaption>
</figure>
</div>
<p><code>stub</code> 文件的写法与 Python 代码的写法相同,只是不需要写具体的实现部分。</p>
<p>另外,由于 Python 的类型标注特性一直在不断完善的过程之中,初期的一些特性很难支撑 Paddle 如此体量的项目,因此,我们提出项目实施过程中的一项基本原则:</p>
<p><strong>在不违背 Paddle 最低支持版本 3.8 语法的基础上,尽可能使用新版本 typing 特性</strong></p>
<p>所谓「不违背 Paddle 最低支持版本 3.8 语法」,一个典型的例子是,Python 3.8 版本不能在类型别名中使用 <code>|</code> 代替 UnionType,如:</p>
<div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0" v-pre=""><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">from</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> typing_extensions </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> TypeAlias</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">from</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> typing </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> Union</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">t: TypeAlias </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> Union[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">int</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">]</span></span></code></pre>
</div><p>在 Python 3.8 的语法中无法转写为:</p>
<div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0" v-pre=""><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">from</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> typing_extensions </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> TypeAlias</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">t: TypeAlias </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> str</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> |</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> int</span></span></code></pre>
</div><p>但,我们希望「尽可能使用新版本 typing 特性」,因此,通过 <a href="https://peps.python.org/pep-0563/" target="_blank" rel="noreferrer">PEP 563 – Postponed Evaluation of Annotations</a> ,我们可以在函数签名中使用 Python 3.10 的语法特性,如:</p>
<div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0" v-pre=""><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">from</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> __future__</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> annotations</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> foo</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(bar: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">str</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> |</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> int</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">) -> </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">None</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">:</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> ...</span></span></code></pre>
</div><p>以上,为本项目实施的总体方案与基本原则,接下来,按照前文所讲的「以任务模块的角度」,简单拆分讲解一下。</p>
<h3 id="typing-模块的引入" tabindex="-1"><code>_typing</code> 模块的引入 <a class="header-anchor" href="#typing-模块的引入" aria-label="Permalink to "`_typing` 模块的引入""></a></h3>
<p>Paddle 中会用到很多公用的标注类型,比如数据布局 <code>NCHW</code>、<code>NHWC</code> 等。<code>_typing</code> 模块的引入,一方面可以统一规范开发者的标注行为,减少维护成本,另一方面,也可以减少各类书写错误。可以将 <code>_typing</code> 模块的地位与 Python 中的 <code>int</code>、<code>str</code> 等基础类型等同,由此,整个 Paddle 项目的标注体系可以分为:</p>
<ul>
<li>基础类型</li>
<li>基础类</li>
<li>接口</li>
</ul>
<p>三个部分。</p>
<!-- hierarchy.png -->
<div style="display: flex; justify-content: center">
<figure style="width: 80%;">
<img src="../images/type-hints-project/hierarchy.png"/>
<figcaption>类型层级结构</figcaption>
</figure>
</div>
<p>具体到 <code>_typing</code> 模块,其本身作为 Paddle 的一个私有模块放置于 <code>python/paddle</code> 目录下:</p>
<!-- typing_module.png -->
<div style="display: flex; justify-content: center">
<figure style="width: 80%;">
<img src="../images/type-hints-project/typing_module.png"/>
<figcaption>_typing 模块</figcaption>
</figure>
</div>
<p>其内部包括基础公共类型(<code>basic.py</code>)、数据布局(<code>layout.py</code>)等。</p>
<p>回顾项目整体实施过程中 <code>_typing</code> 模块的建设与使用,最大的收益是规范了一些公共类型的标注行为。比如,<code>NCHW</code>、<code>NHWC</code> 等这类数据布局,很容易出现书写错误,也确实发现过 Paddle 源码中错误的类型标注问题。再如,Paddle 中的设备类型 <code>CPUPlace</code>、<code>CUDAPlace</code> 等,与 <code>Place</code> ,实际上没有继承关系,这就需要在众多使用 <code>Place</code> 的地方引入 <code>PlaceLike</code> 类型。</p>
<p>但是,<code>_typing</code> 建设的过程中,也逐渐暴露出一些问题,最主要的有两个:</p>
<ul>
<li>粒度控制</li>
<li>单元测试</li>
</ul>
<p>所谓「粒度控制」是指,很难用统一的标注来划分哪些类型需要归类入 <code>_typing</code>,哪些则直接使用 Python 的基础类型进行组合。比如,<code>_typing</code> 中的 <code>IntSequence = Sequence[int]</code>,很多地方都会用到,但,具体到每个接口,也许直接标注 <code>Sequence[int]</code> 会更简单。</p>
<p>对于 <code>_typing</code> 模块缺少单元测试也是一个比较大的遗憾。这就不得不说明一下我们是如何保证项目类型标注的正确性这个问题了。</p>
<p>最理想的方式当然是对每个接口做类型检测的单元测试,但是,由于项目本身的人力与时间投入不允许我们这么做,我们选择通过对接口中的「示例代码」做类型检查这种方式。</p>
<div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0" v-pre=""><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(x: Tensor, name: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">str</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> |</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> None</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> None</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">) -> Tensor:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> r</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"""</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> Calculates the natural log of the given input Tensor, element-wise.</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> .. math::</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> Out = \ln(x)</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> Args:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> x (Tensor): Input Tensor. Must be one of the following types: int32, int64, float16, bfloat16, float32, float64, complex64, complex128.</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> name (str|None): The default value is None. Normally there is no need for user to set this property. For more information, please refer to :ref:`api_guide_Name`</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> Returns:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> Tensor: The natural log of the input Tensor computed element-wise.</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> Examples:</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> .. code-block:: python</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> >>> </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">import paddle</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> >>> </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">x = [[2, 3, 4], [7, 8, 9]]</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> >>> </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">x = paddle.to_tensor(x, dtype='float32')</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> >>> </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">print(paddle.log(x))</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> Tensor(shape=[2, 3], dtype=float32, place=Place(cpu), stop_gradient=True,</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> [[0.69314718, 1.09861231, 1.38629436],</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> [1.94591010, 2.07944155, 2.19722462]])</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> """</span></span></code></pre>
</div><p>也就是上面这段代码中的「Examples」部分。</p>
<p>由于 Paddle 之前对接口的建设都要求书写「示例代码」,其中包括了接口基本的使用方式,那么,我们就可以通过对其进行类型检查,从而保证 Paddle 整体接口的基础类型检查的正确性了。</p>
<p>不过,这样会牵扯出另一个问题:接口依赖。</p>
<p>如果仔细观察上述的示例代码,会发现,其中同时应用到了 <code>paddle.to_tensor</code> 与 <code>paddle.log</code> 两个接口。那么,如果需要保证 <code>paddle.log</code> 这段示例代码检查正确,就需要先把 <code>paddle.to_tensor</code> 这个接口标注正确。类似的依赖问题层出不穷,由于我们使用的工具 <code>mypy</code> 会将没有标注的接口统一识别为 <code>Any</code> ,这就导致,如果 review 不仔细就会放过一些实际上错误的标注问题。为了解决这个问题,一方面,我们在整理项目标注任务的时候,根据优先级进行排序,使相对基础或者简单的接口尽早完成;另一方面,我们单独创建了一个 PR 用于对所有接口做全量检查的监测,也就是说,即使有上述所谓的漏网之鱼,一旦依赖的接口进行了类型标注,不再是 <code>Any</code> ,那么问题则可以在这个 PR 中及时被发现并修正过来。</p>
<p>以上,便是 <code>_typing</code> 模块的引入以及一系列需要在项目主体标注前需要完成的任务。</p>
<h3 id="ci-流水线的建设" tabindex="-1">CI 流水线的建设 <a class="header-anchor" href="#ci-流水线的建设" aria-label="Permalink to "CI 流水线的建设""></a></h3>
<p>前面提到,我们使用 <code>mypy</code> 来保证类型标注的准确性,这就涉及到 CI 流水线的建设问题。</p>
<!-- typing_ci.png -->
<div style="display: flex; justify-content: center">
<figure style="width: 80%;">
<img src="../images/type-hints-project/typing_ci.png"/>
<figcaption>CI 流水线</figcaption>
</figure>
</div>
<p>上图简单描述了 CI 流水线的整体流程:</p>
<ul>
<li>添加标注</li>
<li>抽取示例代码</li>
<li>静态检查</li>
</ul>
<p>这里不再详述赘述 CI 流水线的建设过程,主要有两处考量与大家分享:</p>
<ul>
<li>性能问题</li>
<li>流程问题</li>
</ul>
<p>所谓「性能问题」,如果使用过 <code>mypy</code> 的同学可能深有体会,这东西太慢了。我们在项目中同样遇到了性能问题,Paddle 中 2000+ 个接口,检查一遍需要 2 个多小时。因此,我们使用进程池的方式对接口做并行检查,也将整体检查时间缩减到 10 分钟左右(虽然有同学反馈,内存占用可能有几十个 GB,whatever,反正是在 CI 上做检查,而且也没有崩,就当是啥都没发生吧……)。</p>
<!-- ci_con.png -->
<div style="display: flex; justify-content: center">
<figure style="width: 80%;">
<img src="../images/type-hints-project/ci_con.png"/>
<figcaption>并行处理</figcaption>
</figure>
</div>
<p>另外「流程问题」也是需要重点关注的。正如前文所讲,我们需要对接口做全量检查,但是,具体到每个接口的修改,则只能针对当前接口进行检查,否则问题无法收敛。因此,在整体类型标注完成之前,CI 的行为:</p>
<ul>
<li>默认:不检查类型</li>
<li><code>[Typing]</code> 的 PR 做增量检查;也就是只检查 PR 中修改的接口</li>
<li><code>[Typing all]</code> 的 PR 做全量检查;也就是检查所有接口</li>
</ul>
<p>由此,可以在容忍一定错误的状态下,逐步推进整体项目的进展。</p>
<p>截止到本文发表为止,CI 已经切换到常规行为:</p>