WEBVTT

1
00:00:03.645 --> 00:00:06.145
<00:00:03.645>For <00:00:03.772>me, <00:00:03.899>it's <00:00:04.026>the <00:00:04.154>first <00:00:04.281>time <00:00:04.408>that <00:00:04.535>I <00:00:04.663>get <00:00:04.790>some <00:00:04.917>intro <00:00:05.045>music,

2
00:00:06.285 --> 00:00:07.545
<00:00:06.285>so <00:00:06.663>it's <00:00:07.041>really <00:00:07.419>amazing.

3
00:00:07.765 --> 00:00:09.905
<00:00:07.765>Um, <00:00:07.965>great <00:00:08.164>to <00:00:08.365>see <00:00:08.565>all <00:00:08.764>of <00:00:08.965>you <00:00:09.165>here.

4
00:00:10.245 --> 00:00:12.465
<00:00:10.245>Um, <00:00:10.444>really <00:00:10.645>feels <00:00:10.844>fantastic <00:00:11.045>to <00:00:11.245>be <00:00:11.444>here, <00:00:11.645>live

5
00:00:12.465 --> 00:00:13.905
<00:00:12.465>and <00:00:12.789>in <00:00:13.113>person, <00:00:13.437>not <00:00:13.761>online.

6
00:00:13.905 --> 00:00:17.065
<00:00:13.905>That's <00:00:14.138>really <00:00:14.371>great. <00:00:14.604>So <00:00:14.838>let's <00:00:15.071>get <00:00:15.305>started.

7
00:00:18.175 --> 00:00:19.715
<00:00:18.175>Hi, <00:00:18.637>I'm, <00:00:19.099>I'm <00:00:19.561>Hoku.

8
00:00:19.875 --> 00:00:21.155
<00:00:19.875>I <00:00:20.259>do <00:00:20.643>ML <00:00:21.027>ops

9
00:00:21.215 --> 00:00:23.635
<00:00:21.215>and <00:00:21.370>they <00:00:21.526>always <00:00:21.681>say, <00:00:21.837>you <00:00:21.992>should <00:00:22.148>do <00:00:22.303>what <00:00:22.459>you <00:00:22.615>enjoy.

10
00:00:24.015 --> 00:00:26.315
<00:00:24.015>So <00:00:24.215>I <00:00:24.415>combined <00:00:24.615>all <00:00:24.815>my <00:00:25.015>passions, <00:00:25.215>machine <00:00:25.415>learning,

11
00:00:26.315 --> 00:00:28.155
<00:00:26.315>writing <00:00:26.665>yamo <00:00:27.015>files <00:00:27.365>and <00:00:27.715>deciphering

12
00:00:28.355 --> 00:00:29.435
<00:00:28.355>Kubernetes <00:00:28.841>error <00:00:29.327>messages.

13
00:00:29.855 --> 00:00:31.235
<00:00:29.855>So <00:00:30.476>yeah, <00:00:31.097>um,

14
00:00:31.455 --> 00:00:34.235
<00:00:31.455>but <00:00:31.610>seriously, <00:00:31.766>I'm <00:00:31.921>a <00:00:32.077>senior <00:00:32.232>full <00:00:32.388>stack <00:00:32.543>engineer <00:00:32.699>deep <00:00:32.855>up.

15
00:00:34.365 --> 00:00:37.075
<00:00:34.365>Originally <00:00:34.565>I'm <00:00:34.765>actually <00:00:34.965>a <00:00:35.165>Kolin <00:00:35.365>and <00:00:35.565>Python <00:00:35.765>developer

16
00:00:37.215 --> 00:00:39.115
<00:00:37.215>and <00:00:37.415>then <00:00:37.615>I <00:00:37.815>got <00:00:38.015>a <00:00:38.215>little <00:00:38.415>bit <00:00:38.615>distracted

17
00:00:39.115 --> 00:00:40.195
<00:00:39.115>by <00:00:39.439>machine <00:00:39.763>learning <00:00:40.087>stuff.

18
00:00:40.335 --> 00:00:41.355
<00:00:40.335>So <00:00:40.641>now <00:00:40.946>I'm <00:00:41.253>here.

19
00:00:42.135 --> 00:00:44.875
<00:00:42.135>Um, <00:00:42.262>and <00:00:42.389>since <00:00:42.516>I'm <00:00:42.644>not <00:00:42.771>smart <00:00:42.898>enough <00:00:43.025>to <00:00:43.153>be <00:00:43.280>a <00:00:43.407>data <00:00:43.535>scientist,

20
00:00:45.035 --> 00:00:46.555
<00:00:45.035>I <00:00:45.308>do <00:00:45.582>a <00:00:45.855>lot <00:00:46.129>of <00:00:46.403>DevOps

21
00:00:46.615 --> 00:00:49.595
<00:00:46.615>and <00:00:46.790>try <00:00:46.965>to <00:00:47.140>bring <00:00:47.315>the <00:00:47.490>best <00:00:47.665>of <00:00:47.840>software <00:00:48.015>engineering

22
00:00:49.595 --> 00:00:50.835
<00:00:49.595>to <00:00:49.818>the <00:00:50.041>world <00:00:50.264>of <00:00:50.487>machine <00:00:50.711>learning.

23
00:00:51.975 --> 00:00:54.915
<00:00:51.975>Now <00:00:52.150>comes <00:00:52.325>the <00:00:52.500>obligatory <00:00:52.675>marketing <00:00:52.850>slide. <00:00:53.025>Please <00:00:53.200>watch <00:00:53.375>it.

24
00:00:55.135 --> 00:00:57.555
<00:00:55.135>Um, <00:00:55.335>I <00:00:55.535>had <00:00:55.735>two <00:00:55.934>problems, <00:00:56.135>my <00:00:56.335>marketing <00:00:56.535>colleagues

25
00:00:57.625 --> 00:00:59.555
<00:00:57.625>that <00:00:57.825>I <00:00:58.025>give <00:00:58.225>you <00:00:58.425>a <00:00:58.625>brief <00:00:58.825>overview <00:00:59.025>of

26
00:00:59.785 --> 00:01:01.475
<00:00:59.785>what <00:01:00.065>our <00:01:00.345>company <00:01:00.625>actually <00:01:00.904>does, <00:01:01.184>right?

27
00:01:01.775 --> 00:01:05.035
<00:01:01.775>So <00:01:01.915>deep <00:01:02.055>up <00:01:02.195>is <00:01:02.335>a <00:01:02.475>deep <00:01:02.614>tech <00:01:02.754>startup <00:01:02.894>headquartered <00:01:03.035>in <00:01:03.175>bond.

28
00:01:05.035 --> 00:01:08.715
<00:01:05.035>However, <00:01:05.190>we <00:01:05.346>are <00:01:05.501>quite <00:01:05.657>distributed <00:01:05.812>and <00:01:05.968>I <00:01:06.123>mostly <00:01:06.279>work <00:01:06.435>remotely

29
00:01:08.735 --> 00:01:11.155
<00:01:08.735>and <00:01:08.910>most <00:01:09.085>of <00:01:09.260>my <00:01:09.435>colleagues <00:01:09.610>actually <00:01:09.785>also <00:01:09.960>work <00:01:10.135>remotely.

30
00:01:11.695 --> 00:01:12.875
<00:01:11.695>Um, <00:01:12.048>I <00:01:12.402>usually <00:01:12.757>work

31
00:01:12.895 --> 00:01:15.635
<00:01:12.895>for <00:01:13.011>my <00:01:13.128>country <00:01:13.244>estate <00:01:13.361>right <00:01:13.478>in <00:01:13.595>the <00:01:13.711>middle <00:01:13.828>of <00:01:13.945>the <00:01:14.061>forest <00:01:14.178>and <00:01:14.295>Hanover.

32
00:01:15.695 --> 00:01:16.955
<00:01:15.695>So <00:01:15.978>yeah, <00:01:16.262>it's <00:01:16.545>really <00:01:16.829>nice

33
00:01:17.255 --> 00:01:19.635
<00:01:17.255>and <00:01:17.395>we've <00:01:17.535>grown <00:01:17.675>to <00:01:17.815>a <00:01:17.955>team <00:01:18.095>of <00:01:18.235>nearly <00:01:18.375>a <00:01:18.515>hundred <00:01:18.655>people

34
00:01:19.655 --> 00:01:21.475
<00:01:19.655>and <00:01:19.888>of <00:01:20.121>course <00:01:20.355>plan <00:01:20.588>to <00:01:20.821>expand <00:01:21.055>further.

35
00:01:22.055 --> 00:01:24.795
<00:01:22.055>Our <00:01:22.288>goal <00:01:22.521>is <00:01:22.755>the <00:01:22.988>completed <00:01:23.221>automated <00:01:23.455>measurement

36
00:01:24.795 --> 00:01:27.275
<00:01:24.795>of <00:01:25.075>all <00:01:25.355>underground <00:01:25.635>infrastructure <00:01:25.915>like <00:01:26.195>um,

37
00:01:27.275 --> 00:01:28.915
<00:01:27.275>underground <00:01:27.741>cables <00:01:28.208>and <00:01:28.675>pipes.

38
00:01:29.175 --> 00:01:31.675
<00:01:29.175>And <00:01:29.330>this <00:01:29.486>really <00:01:29.641>a <00:01:29.797>stark <00:01:29.952>contrast <00:01:30.108>with <00:01:30.263>the <00:01:30.419>current <00:01:30.575>state

39
00:01:31.675 --> 00:01:34.035
<00:01:31.675>of <00:01:31.782>the <00:01:31.890>art <00:01:31.998>where <00:01:32.105>you <00:01:32.213>bury <00:01:32.321>a <00:01:32.428>cable <00:01:32.536>in <00:01:32.644>the <00:01:32.751>ground <00:01:32.859>and <00:01:32.967>a <00:01:33.075>week

40
00:01:34.035 --> 00:01:35.795
<00:01:34.035>or <00:01:34.268>two <00:01:34.501>later <00:01:34.735>a <00:01:34.968>surveyor <00:01:35.201>comes <00:01:35.435>around

41
00:01:35.795 --> 00:01:39.155
<00:01:35.795>and <00:01:35.935>tries <00:01:36.075>to <00:01:36.215>figure <00:01:36.355>out <00:01:36.495>where <00:01:36.635>actually <00:01:36.775>the <00:01:36.915>cable <00:01:37.055>is <00:01:37.195>located.

42
00:01:39.735 --> 00:01:41.435
<00:01:39.735>We <00:01:40.015>have <00:01:40.295>developed <00:01:40.575>a <00:01:40.855>small <00:01:41.135>device

43
00:01:41.865 --> 00:01:44.355
<00:01:41.865>that <00:01:42.145>can <00:01:42.425>measure <00:01:42.705>entire <00:01:42.985>construction <00:01:43.265>pits

44
00:01:44.355 --> 00:01:46.875
<00:01:44.354>and <00:01:44.554>trenches <00:01:44.755>in <00:01:44.954>three <00:01:45.154>D <00:01:45.354>with <00:01:45.554>centimeter <00:01:45.755>accuracy.

45
00:01:47.015 --> 00:01:49.195
<00:01:47.015>And <00:01:47.155>the <00:01:47.295>data <00:01:47.435>has <00:01:47.575>then <00:01:47.715>processed <00:01:47.855>of <00:01:47.995>course <00:01:48.135>in <00:01:48.275>the <00:01:48.415>cloud

46
00:01:49.195 --> 00:01:50.555
<00:01:49.195>with <00:01:49.500>machine <00:01:49.807>learning <00:01:50.113>and <00:01:50.419>then

47
00:01:50.795 --> 00:01:53.555
<00:01:50.795>provided <00:01:51.028>to <00:01:51.261>communication <00:01:51.495>companies, <00:01:51.728>civil <00:01:51.961>engineers, <00:01:52.195>uh,

48
00:01:53.735 --> 00:01:55.635
<00:01:53.735>and <00:01:54.015>network <00:01:54.295>operators <00:01:54.575>in <00:01:54.855>the <00:01:55.135>form

49
00:01:55.635 --> 00:01:58.235
<00:01:55.634>of <00:01:55.835>documentation <00:01:56.035>three <00:01:56.234>D <00:01:56.434>models <00:01:56.634>and <00:01:56.835>pipeline <00:01:57.035>plans.

50
00:01:58.615 --> 00:02:01.155
<00:01:58.615>And <00:01:58.755>this <00:01:58.895>way <00:01:59.035>our <00:01:59.175>customers <00:01:59.315>always <00:01:59.455>have <00:01:59.595>an <00:01:59.735>eye <00:01:59.875>on <00:02:00.015>the

51
00:02:01.315 --> 00:02:02.355
<00:02:01.315>progress <00:02:01.627>of <00:02:01.939>their <00:02:02.251>construction.

52
00:02:02.615 --> 00:02:04.395
<00:02:02.615>And <00:02:02.815>all <00:02:03.015>of <00:02:03.214>this <00:02:03.414>is <00:02:03.615>done <00:02:03.815>quicker, <00:02:04.015>easier,

53
00:02:04.855 --> 00:02:07.995
<00:02:04.855>and <00:02:05.010>more <00:02:05.166>precisely <00:02:05.321>than <00:02:05.477>with <00:02:05.632>any <00:02:05.788>previous <00:02:05.943>methods <00:02:06.099>so <00:02:06.255>far.

54
00:02:08.945 --> 00:02:10.755
<00:02:08.945>Alright, <00:02:09.225>that <00:02:09.505>was <00:02:09.785>the <00:02:10.065>marketing <00:02:10.345>stuff.

55
00:02:11.215 --> 00:02:15.515
<00:02:11.215>Now <00:02:11.355>to <00:02:11.495>the <00:02:11.635>talk <00:02:11.775>today <00:02:11.915>we <00:02:12.055>are <00:02:12.195>talking <00:02:12.335>about <00:02:12.475>ML <00:02:12.615>ops

56
00:02:15.515 --> 00:02:17.435
<00:02:15.515>and <00:02:15.864>Kubernetes <00:02:16.214>and <00:02:16.565>our <00:02:16.915>workflows

57
00:02:17.435 --> 00:02:20.515
<00:02:17.435>and <00:02:17.610>to <00:02:17.785>ensure <00:02:17.960>that <00:02:18.135>all <00:02:18.310>doesn't <00:02:18.485>get <00:02:18.660>too <00:02:18.835>theoretically,

58
00:02:20.715 --> 00:02:23.475
<00:02:20.715>I <00:02:20.890>brought <00:02:21.065>along <00:02:21.240>a <00:02:21.415>smu, <00:02:21.590>a <00:02:21.765>few <00:02:21.940>small <00:02:22.115>demos,

59
00:02:23.475 --> 00:02:24.955
<00:02:23.475>so <00:02:23.741>hopefully <00:02:24.007>they <00:02:24.274>work <00:02:24.540>as <00:02:24.807>planned.

60
00:02:25.075 --> 00:02:26.355
<00:02:25.075>I <00:02:25.267>have <00:02:25.459>no <00:02:25.650>idea <00:02:25.843>if <00:02:26.035>that <00:02:26.226>works

61
00:02:26.355 --> 00:02:31.235
<00:02:26.355>because <00:02:26.482>the <00:02:26.609>velon <00:02:26.736>is <00:02:26.864>the <00:02:26.991>wifi <00:02:27.118>is <00:02:27.245>quite <00:02:27.373>eh, <00:02:27.500>okay, <00:02:27.627>so, <00:02:27.755>um,

62
00:02:31.425 --> 00:02:33.675
<00:02:31.425>firstly <00:02:31.658>about <00:02:31.891>you, <00:02:32.125>quick <00:02:32.358>show <00:02:32.591>of <00:02:32.825>hands.

63
00:02:33.855 --> 00:02:36.515
<00:02:33.855>Who <00:02:34.054>here <00:02:34.255>is <00:02:34.454>doing <00:02:34.655>machine <00:02:34.855>learning <00:02:35.054>or <00:02:35.255>ai?

64
00:02:38.305 --> 00:02:41.675
<00:02:38.305>Okay, <00:02:38.432>and <00:02:38.559>um, <00:02:38.686>who <00:02:38.814>here <00:02:38.941>has <00:02:39.068>an <00:02:39.195>ML <00:02:39.323>model <00:02:39.450>running <00:02:39.577>in <00:02:39.705>production

65
00:02:41.675 --> 00:02:43.795
<00:02:41.675>or <00:02:41.908>an <00:02:42.141>AI <00:02:42.375>model <00:02:42.608>running <00:02:42.841>in <00:02:43.075>production?

66
00:02:44.065 --> 00:02:46.115
<00:02:44.065>Okay, <00:02:44.298>uh, <00:02:44.531>okay. <00:02:44.765>Okay. <00:02:44.998>Quite <00:02:45.231>a <00:02:45.465>few.

67
00:02:46.415 --> 00:02:48.195
<00:02:46.415>And <00:02:46.765>um, <00:02:47.114>who <00:02:47.465>here <00:02:47.815>feels

68
00:02:48.195 --> 00:02:51.315
<00:02:48.195>that <00:02:48.370>their <00:02:48.545>ML <00:02:48.720>ops <00:02:48.894>process <00:02:49.070>are <00:02:49.245>running <00:02:49.420>really <00:02:49.595>smoothly

69
00:02:51.415 --> 00:02:52.715
<00:02:51.415>and <00:02:51.707>they're <00:02:52.000>working <00:02:52.292>really <00:02:52.585>fine.

70
00:02:53.215 --> 00:02:56.035
<00:02:53.215>So <00:02:53.448>me <00:02:53.681>not, <00:02:53.915>oh, <00:02:54.148>here <00:02:54.381>two <00:02:54.615>people.

71
00:02:56.105 --> 00:02:58.435
<00:02:56.105>Okay, <00:02:56.280>you <00:02:56.454>two, <00:02:56.630>please <00:02:56.804>come <00:02:56.980>to <00:02:57.155>the <00:02:57.329>talk, <00:02:57.505>uh,

72
00:02:58.435 --> 00:03:00.085
<00:02:58.435>after <00:02:58.635>the <00:02:58.835>talk <00:02:59.035>come <00:02:59.235>to <00:02:59.435>me, <00:02:59.635>I <00:02:59.835>want

73
00:03:00.085 --> 00:03:01.365
<00:03:00.085>to <00:03:00.373>talk <00:03:00.661>definitely <00:03:00.949>with <00:03:01.237>you.

74
00:03:01.825 --> 00:03:06.165
<00:03:01.825>So <00:03:01.964>for <00:03:02.105>the <00:03:02.244>rest <00:03:02.385>of <00:03:02.524>you, <00:03:02.665>what <00:03:02.804>is <00:03:02.945>actually <00:03:03.084>ML <00:03:03.225>ops?

75
00:03:06.385 --> 00:03:08.645
<00:03:06.385>So <00:03:06.560>ML <00:03:06.734>ops <00:03:06.910>is <00:03:07.084>kind <00:03:07.260>of <00:03:07.435>a <00:03:07.609>superhero <00:03:07.785>method

76
00:03:08.645 --> 00:03:10.445
<00:03:08.645>that <00:03:08.995>brings <00:03:09.345>together <00:03:09.695>software <00:03:10.045>development

77
00:03:10.445 --> 00:03:12.445
<00:03:10.445>and <00:03:10.725>data <00:03:11.005>engineering <00:03:11.285>and <00:03:11.565>machine <00:03:11.845>learning

78
00:03:12.445 --> 00:03:14.565
<00:03:12.445>to <00:03:12.725>optimize <00:03:13.005>the <00:03:13.285>process <00:03:13.565>of <00:03:13.845>training

79
00:03:14.745 --> 00:03:16.965
<00:03:14.745>and <00:03:15.095>deploying <00:03:15.445>ML <00:03:15.795>S <00:03:16.145>models.

80
00:03:18.345 --> 00:03:21.925
<00:03:18.345>Our <00:03:18.484>goal <00:03:18.625>here <00:03:18.765>is <00:03:18.905>to <00:03:19.045>connect <00:03:19.185>the <00:03:19.325>development <00:03:19.465>of <00:03:19.605>ML <00:03:19.745>systems

81
00:03:22.235 --> 00:03:23.725
<00:03:22.235>with <00:03:22.503>the <00:03:22.771>operation <00:03:23.039>of <00:03:23.307>these <00:03:23.576>systems.

82
00:03:23.825 --> 00:03:26.725
<00:03:23.825>And <00:03:24.000>if <00:03:24.174>that <00:03:24.350>sounds <00:03:24.524>familiar, <00:03:24.700>well <00:03:24.875>that's <00:03:25.049>the <00:03:25.225>definition

83
00:03:26.725 --> 00:03:29.805
<00:03:26.725>of <00:03:26.880>DevOps, <00:03:27.036>but <00:03:27.191>I'm <00:03:27.347>not <00:03:27.502>talking <00:03:27.658>about <00:03:27.813>normal <00:03:27.969>software <00:03:28.125>here,

84
00:03:29.825 --> 00:03:31.685
<00:03:29.825>but <00:03:30.174>about <00:03:30.524>machine <00:03:30.875>learning <00:03:31.225>systems.

85
00:03:31.825 --> 00:03:34.725
<00:03:31.825>So <00:03:31.964>ML <00:03:32.105>ops <00:03:32.244>is <00:03:32.385>really <00:03:32.524>like <00:03:32.665>the <00:03:32.804>younger <00:03:32.945>sibling <00:03:33.084>of <00:03:33.225>DevOps.

86
00:03:34.825 --> 00:03:37.725
<00:03:34.825>You <00:03:35.000>know <00:03:35.174>the <00:03:35.350>story, <00:03:35.524>right? <00:03:35.700>So <00:03:35.875>DevOps <00:03:36.049>always <00:03:36.225>had

87
00:03:37.725 --> 00:03:39.605
<00:03:37.725>to <00:03:37.958>walk <00:03:38.191>10 <00:03:38.424>kilometers <00:03:38.658>in <00:03:38.891>the <00:03:39.125>snow

88
00:03:39.625 --> 00:03:41.125
<00:03:39.625>to <00:03:39.895>the <00:03:40.165>school <00:03:40.435>uphill <00:03:40.705>both <00:03:40.975>ways.

89
00:03:41.425 --> 00:03:43.765
<00:03:41.425>And <00:03:41.600>ML <00:03:41.775>ops, <00:03:41.950>the <00:03:42.125>younger <00:03:42.300>sibling <00:03:42.475>gets <00:03:42.650>driven <00:03:42.825>there

90
00:03:43.765 --> 00:03:44.885
<00:03:43.765>in <00:03:44.017>the <00:03:44.268>self-driving <00:03:44.521>Tesla <00:03:44.773>now.

91
00:03:45.145 --> 00:03:47.125
<00:03:45.145>So <00:03:45.495>yeah, <00:03:45.845>um, <00:03:46.195>really <00:03:46.545>have

92
00:03:47.125 --> 00:03:49.045
<00:03:47.125>to <00:03:47.405>relive <00:03:47.685>my <00:03:47.965>childhood <00:03:48.245>traumas <00:03:48.525>here.

93
00:03:49.045 --> 00:03:51.285
<00:03:49.045>Sorry <00:03:49.245>for <00:03:49.445>that. <00:03:49.645>Anyway, <00:03:49.845>back <00:03:50.045>to <00:03:50.245>ML <00:03:50.445>ops.

94
00:03:51.385 --> 00:03:53.485
<00:03:51.385>So <00:03:51.665>why <00:03:51.945>is <00:03:52.225>ML <00:03:52.505>Ops <00:03:52.785>important?

95
00:03:54.045 --> 00:03:56.805
<00:03:54.045>ML <00:03:54.185>ops <00:03:54.325>is <00:03:54.465>really <00:03:54.605>a <00:03:54.745>must <00:03:54.885>have <00:03:55.025>for <00:03:55.165>organizations <00:03:55.305>that <00:03:55.445>want

96
00:03:56.805 --> 00:03:59.085
<00:03:56.805>to <00:03:56.960>get <00:03:57.116>the <00:03:57.271>most <00:03:57.427>out <00:03:57.582>of <00:03:57.738>their <00:03:57.893>machine <00:03:58.049>learning <00:03:58.205>efforts.

97
00:03:59.325 --> 00:04:02.205
<00:03:59.325>ML <00:03:59.524>ops <00:03:59.725>becomes <00:03:59.924>especially <00:04:00.125>important <00:04:00.325>when <00:04:00.524>we <00:04:00.725>want

98
00:04:02.205 --> 00:04:04.765
<00:04:02.205>to <00:04:02.438>turn <00:04:02.671>ML <00:04:02.905>models <00:04:03.138>into <00:04:03.371>production <00:04:03.605>systems.

99
00:04:05.435 --> 00:04:08.205
<00:04:05.435>Sure, <00:04:05.610>ML <00:04:05.785>ops <00:04:05.960>is <00:04:06.135>also <00:04:06.310>useful <00:04:06.485>in <00:04:06.660>research <00:04:06.835>projects,

100
00:04:08.205 --> 00:04:10.565
<00:04:08.205>but <00:04:08.360>it <00:04:08.516>really <00:04:08.671>becomes <00:04:08.827>crucial <00:04:08.982>when <00:04:09.138>we <00:04:09.293>make <00:04:09.449>the <00:04:09.605>importance

101
00:04:10.565 --> 00:04:11.765
<00:04:10.565>step <00:04:11.105>to <00:04:11.644>production.

102
00:04:12.105 --> 00:04:15.525
<00:04:12.105>And <00:04:12.244>ML <00:04:12.385>ops <00:04:12.524>ensures <00:04:12.665>that <00:04:12.804>ML <00:04:12.945>models <00:04:13.084>can <00:04:13.225>be <00:04:13.364>efficiently <00:04:13.505>trained

103
00:04:15.625 --> 00:04:17.885
<00:04:15.625>and <00:04:15.975>deployed <00:04:16.325>and <00:04:16.675>maintained <00:04:17.024>throughout

104
00:04:17.885 --> 00:04:19.005
<00:04:17.885>their <00:04:18.389>entire <00:04:18.892>lifecycle.

105
00:04:19.465 --> 00:04:22.725
<00:04:19.464>And <00:04:19.620>it <00:04:19.776>makes <00:04:19.931>sure <00:04:20.087>that <00:04:20.242>you <00:04:20.398>can <00:04:20.553>reproduce <00:04:20.709>your <00:04:20.864>results

106
00:04:23.465 --> 00:04:24.965
<00:04:23.465>at <00:04:23.802>the <00:04:24.140>ML <00:04:24.477>ops <00:04:24.815>lifecycle

107
00:04:25.265 --> 00:04:27.645
<00:04:25.265>or <00:04:25.498>workflow <00:04:25.731>consists <00:04:25.965>of <00:04:26.198>really <00:04:26.431>several <00:04:26.664>stages.

108
00:04:27.745 --> 00:04:29.845
<00:04:27.745>So <00:04:28.025>data <00:04:28.305>collection <00:04:28.585>and <00:04:28.865>data, <00:04:29.145>pre-processing,

109
00:04:30.075 --> 00:04:33.325
<00:04:30.075>feature <00:04:30.354>engineering, <00:04:30.635>model <00:04:30.914>training, <00:04:31.195>model <00:04:31.474>evaluation,

110
00:04:33.815 --> 00:04:35.885
<00:04:33.815>deployment, <00:04:34.281>monitoring <00:04:34.748>and <00:04:35.215>maintenance.

111
00:04:35.885 --> 00:04:39.125
<00:04:35.885>And <00:04:36.012>all <00:04:36.139>of <00:04:36.266>these <00:04:36.394>stages <00:04:36.521>play <00:04:36.648>really <00:04:36.775>a <00:04:36.903>critical <00:04:37.030>role <00:04:37.157>in <00:04:37.284>the

112
00:04:39.125 --> 00:04:42.645
<00:04:39.125>success <00:04:39.325>of <00:04:39.525>ML <00:04:39.725>projects <00:04:39.925>and <00:04:40.125>automation <00:04:40.325>version <00:04:40.525>control

113
00:04:42.665 --> 00:04:44.205
<00:04:42.665>and <00:04:43.011>continuous <00:04:43.358>integration <00:04:43.704>is <00:04:44.051>really,

114
00:04:44.475 --> 00:04:45.805
<00:04:44.475>yeah, <00:04:44.874>focal <00:04:45.273>points <00:04:45.672>here.

115
00:04:46.065 --> 00:04:48.005
<00:04:46.065>And <00:04:46.344>this <00:04:46.625>allows <00:04:46.905>for <00:04:47.185>fast <00:04:47.465>development

116
00:04:48.005 --> 00:04:50.565
<00:04:48.005>and <00:04:48.238>deployment <00:04:48.471>cycles <00:04:48.705>while <00:04:48.938>preserving <00:04:49.171>the <00:04:49.405>quality

117
00:04:50.785 --> 00:04:53.405
<00:04:50.784>and <00:04:51.064>performance <00:04:51.344>of <00:04:51.624>your <00:04:51.905>ML <00:04:52.184>models.

118
00:04:54.835 --> 00:04:58.255
<00:04:54.835>One <00:04:55.010>of <00:04:55.185>the <00:04:55.359>significant <00:04:55.534>challenges <00:04:55.710>is <00:04:55.885>the <00:04:56.060>really <00:04:56.234>big

119
00:04:58.255 --> 00:05:00.655
<00:04:58.255>difference <00:04:58.455>in <00:04:58.655>the <00:04:58.855>approach <00:04:59.055>between <00:04:59.255>the <00:04:59.455>research <00:04:59.655>phase

120
00:05:00.985 --> 00:05:03.655
<00:05:00.985>where <00:05:01.185>we <00:05:01.385>develop <00:05:01.585>and <00:05:01.785>define, <00:05:01.985>uh, <00:05:02.185>refine <00:05:02.385>models

121
00:05:04.115 --> 00:05:06.735
<00:05:04.115>and <00:05:04.315>the <00:05:04.515>engineering <00:05:04.715>required <00:05:04.915>for <00:05:05.115>the <00:05:05.315>step <00:05:05.515>two,

122
00:05:06.995 --> 00:05:09.375
<00:05:06.995>the <00:05:07.345>production <00:05:07.695>and <00:05:08.045>the <00:05:08.395>deployment.

123
00:05:10.275 --> 00:05:12.415
<00:05:10.275>On <00:05:10.430>the <00:05:10.586>one <00:05:10.741>hand, <00:05:10.897>we <00:05:11.052>want <00:05:11.208>to <00:05:11.363>be <00:05:11.519>as <00:05:11.674>flexible

124
00:05:12.595 --> 00:05:14.335
<00:05:12.595>as <00:05:12.875>possible <00:05:13.155>in <00:05:13.435>the <00:05:13.715>research <00:05:13.995>environment,

125
00:05:14.335 --> 00:05:16.855
<00:05:14.335>and <00:05:14.490>on <00:05:14.646>the <00:05:14.801>other <00:05:14.957>hand <00:05:15.112>we <00:05:15.268>want <00:05:15.423>to <00:05:15.579>build <00:05:15.734>reproducible,

126
00:05:17.535 --> 00:05:19.775
<00:05:17.535>reliable <00:05:17.885>and <00:05:18.235>scalable <00:05:18.585>ML <00:05:18.935>systems.

127
00:05:20.225 --> 00:05:23.455
<00:05:20.225>Model <00:05:20.400>versioning <00:05:20.575>is <00:05:20.750>another <00:05:20.925>essential <00:05:21.100>aspect <00:05:21.275>of <00:05:21.450>ML <00:05:21.625>Ops.

128
00:05:23.675 --> 00:05:24.975
<00:05:23.675>As <00:05:24.065>models <00:05:24.455>are <00:05:24.845>updated

129
00:05:24.995 --> 00:05:28.215
<00:05:24.995>and <00:05:25.228>improved <00:05:25.461>over <00:05:25.695>time, <00:05:25.928>managing <00:05:26.161>multiple <00:05:26.395>versions

130
00:05:28.395 --> 00:05:31.135
<00:05:28.395>and <00:05:28.628>their <00:05:28.861>dependencies <00:05:29.094>really <00:05:29.328>becomes <00:05:29.561>increasingly <00:05:29.794>complex.

131
00:05:32.075 --> 00:05:35.335
<00:05:32.075>But <00:05:32.191>there <00:05:32.308>are <00:05:32.425>a <00:05:32.541>lot <00:05:32.658>of <00:05:32.775>tools <00:05:32.891>and <00:05:33.008>that <00:05:33.125>is <00:05:33.241>actually <00:05:33.358>a <00:05:33.474>problem

132
00:05:35.445 --> 00:05:38.975
<00:05:35.445>because, <00:05:35.600>well <00:05:35.756>there <00:05:35.911>are <00:05:36.067>so <00:05:36.222>many <00:05:36.378>tools <00:05:36.533>like, <00:05:36.689>like <00:05:36.844>DVC

133
00:05:38.975 --> 00:05:41.335
<00:05:38.975>and <00:05:39.150>Feast <00:05:39.325>and <00:05:39.500>Derm <00:05:39.675>for <00:05:39.850>data <00:05:40.025>and <00:05:40.200>feature <00:05:40.375>management

134
00:05:41.335 --> 00:05:44.575
<00:05:41.335>and <00:05:41.474>then <00:05:41.614>the <00:05:41.755>L <00:05:41.895>flow <00:05:42.034>Q <00:05:42.174>flow <00:05:42.315>Luigi <00:05:42.455>for <00:05:42.594>experiment <00:05:42.734>management

135
00:05:44.715 --> 00:05:46.015
<00:05:44.715>and <00:05:45.300>task <00:05:45.885>orchestration.

136
00:05:46.555 --> 00:05:49.695
<00:05:46.555>So, <00:05:46.710>um, <00:05:46.866>I <00:05:47.021>really, <00:05:47.177>since <00:05:47.332>I <00:05:47.488>only <00:05:47.643>have <00:05:47.799>30 <00:05:47.955>minutes,

137
00:05:49.895 --> 00:05:51.175
<00:05:49.895>I <00:05:50.087>can <00:05:50.279>only <00:05:50.471>focus <00:05:50.663>on <00:05:50.855>one <00:05:51.047>tool

138
00:05:51.175 --> 00:05:54.375
<00:05:51.175>and <00:05:51.455>that <00:05:51.735>today <00:05:52.015>is <00:05:52.295>Argo <00:05:52.575>more,

139
00:05:54.805 --> 00:05:56.415
<00:05:54.805>more <00:05:55.271>precisely <00:05:55.738>Argo <00:05:56.205>workflows

140
00:05:56.415 --> 00:05:59.365
<00:05:56.415>because <00:05:56.570>there <00:05:56.726>are <00:05:56.881>multiple <00:05:57.037>tools <00:05:57.192>grouped <00:05:57.348>under <00:05:57.503>the <00:05:57.659>Argo <00:05:57.815>name

141
00:05:59.475 --> 00:06:01.765
<00:05:59.475>like <00:05:59.708>Argo <00:05:59.941>Events, <00:06:00.175>Argo <00:06:00.408>cd, <00:06:00.641>Argo <00:06:00.875>Rollouts,

142
00:06:01.765 --> 00:06:04.405
<00:06:01.765>but <00:06:01.998>today <00:06:02.231>is <00:06:02.465>all <00:06:02.698>about <00:06:02.931>Argo <00:06:03.164>workflows.

143
00:06:04.665 --> 00:06:07.485
<00:06:04.665>So <00:06:04.865>Argo, <00:06:05.065>why <00:06:05.265>do <00:06:05.465>we <00:06:05.665>need <00:06:05.865>that <00:06:06.065>actually?

144
00:06:08.375 --> 00:06:12.235
<00:06:08.375>So <00:06:08.530>imagine <00:06:08.686>you <00:06:08.841>have <00:06:08.997>a <00:06:09.152>workflow, <00:06:09.308>so <00:06:09.463>any <00:06:09.619>relatively <00:06:09.775>defined

145
00:06:12.295 --> 00:06:14.035
<00:06:12.295>and <00:06:12.645>repetitive <00:06:12.995>process, <00:06:13.345>for <00:06:13.695>example,

146
00:06:14.535 --> 00:06:18.155
<00:06:14.535>we <00:06:14.675>load <00:06:14.815>some <00:06:14.955>lidar <00:06:15.095>data <00:06:15.235>from <00:06:15.375>a <00:06:15.515>construction <00:06:15.655>pit <00:06:15.795>from <00:06:15.935>cloud

147
00:06:18.155 --> 00:06:20.555
<00:06:18.155>storage, <00:06:18.388>perform <00:06:18.621>some <00:06:18.854>wild <00:06:19.088>calculations <00:06:19.321>on <00:06:19.554>it

148
00:06:20.695 --> 00:06:22.795
<00:06:20.695>and <00:06:20.895>upload <00:06:21.094>the <00:06:21.295>result <00:06:21.495>to <00:06:21.695>another <00:06:21.895>cloud <00:06:22.094>storage

149
00:06:22.815 --> 00:06:25.275
<00:06:22.815>and <00:06:22.955>maybe <00:06:23.094>let <00:06:23.235>other <00:06:23.375>systems <00:06:23.515>know <00:06:23.655>that <00:06:23.795>we <00:06:23.935>have <00:06:24.075>done <00:06:24.215>that.

150
00:06:25.535 --> 00:06:26.715
<00:06:25.535>So <00:06:25.747>that <00:06:25.959>is <00:06:26.172>a <00:06:26.384>very <00:06:26.597>simple

151
00:06:26.775 --> 00:06:28.075
<00:06:26.775>and <00:06:27.164>really <00:06:27.555>straight <00:06:27.945>uh,

152
00:06:28.075 --> 00:06:30.435
<00:06:28.075>forward <00:06:28.308>workflow <00:06:28.541>really <00:06:28.775>from <00:06:29.008>my <00:06:29.241>daily <00:06:29.474>work.

153
00:06:30.855 --> 00:06:33.475
<00:06:30.855>Um, <00:06:31.030>and <00:06:31.205>now <00:06:31.380>we <00:06:31.555>want <00:06:31.730>to <00:06:31.905>build <00:06:32.080>this <00:06:32.255>workflow.

154
00:06:34.085 --> 00:06:36.355
<00:06:34.085>Let's <00:06:34.260>say <00:06:34.435>our <00:06:34.609>workflow <00:06:34.784>code <00:06:34.960>is <00:06:35.135>written <00:06:35.310>in <00:06:35.484>Python

155
00:06:36.575 --> 00:06:38.835
<00:06:36.575>for <00:06:36.854>example, <00:06:37.135>and <00:06:37.414>to <00:06:37.695>be <00:06:37.974>able

156
00:06:38.835 --> 00:06:40.675
<00:06:38.835>to <00:06:39.114>execute <00:06:39.395>at <00:06:39.674>a <00:06:39.955>different <00:06:40.234>environments.

157
00:06:40.675 --> 00:06:43.395
<00:06:40.675>We <00:06:40.802>put <00:06:40.929>it <00:06:41.056>of <00:06:41.184>course <00:06:41.311>in <00:06:41.438>Docker <00:06:41.565>container <00:06:41.693>into <00:06:41.820>it <00:06:41.947>triggers <00:06:42.075>the

158
00:06:43.395 --> 00:06:44.475
<00:06:43.395>execution <00:06:43.719>of <00:06:44.043>a <00:06:44.367>workflow.

159
00:06:44.475 --> 00:06:46.275
<00:06:44.475>We <00:06:44.675>write <00:06:44.875>a <00:06:45.075>little <00:06:45.275>bit <00:06:45.475>more <00:06:45.675>Python <00:06:45.875>code

160
00:06:46.575 --> 00:06:48.835
<00:06:46.575>and <00:06:46.715>since <00:06:46.854>we <00:06:46.995>want <00:06:47.135>to <00:06:47.275>upload <00:06:47.414>the <00:06:47.555>results <00:06:47.695>of <00:06:47.835>the <00:06:47.974>workflow

161
00:06:48.835 --> 00:06:52.555
<00:06:48.835>to <00:06:48.974>some <00:06:49.114>cloud <00:06:49.255>storage, <00:06:49.395>we <00:06:49.534>write <00:06:49.674>more <00:06:49.815>code <00:06:49.955>to <00:06:50.094>do <00:06:50.234>that.

162
00:06:53.295 --> 00:06:54.595
<00:06:53.295>And <00:06:53.587>then <00:06:53.880>we <00:06:54.172>find <00:06:54.465>out

163
00:06:54.595 --> 00:06:56.515
<00:06:54.595>that <00:06:54.770>we <00:06:54.945>have <00:06:55.120>a <00:06:55.295>second <00:06:55.470>step <00:06:55.645>in <00:06:55.820>the <00:06:55.995>workflow

164
00:06:56.745 --> 00:06:58.715
<00:06:56.745>that <00:06:56.978>actually <00:06:57.211>runs <00:06:57.445>in <00:06:57.678>a <00:06:57.911>different <00:06:58.145>container,

165
00:06:58.905 --> 00:07:01.355
<00:06:58.905>then <00:06:59.060>we <00:06:59.216>need <00:06:59.371>some <00:06:59.527>glucose <00:06:59.682>to <00:06:59.838>bind <00:06:59.993>it <00:07:00.149>all <00:07:00.304>together.

166
00:07:02.055 --> 00:07:05.275
<00:07:02.055>And <00:07:02.210>then <00:07:02.366>we <00:07:02.521>might <00:07:02.677>not <00:07:02.832>want <00:07:02.988>to <00:07:03.143>run <00:07:03.299>this <00:07:03.455>workflow

167
00:07:05.295 --> 00:07:07.755
<00:07:05.295>but <00:07:05.470>uh, <00:07:05.645>just <00:07:05.820>once <00:07:05.995>but <00:07:06.170>200 <00:07:06.345>times <00:07:06.520>a <00:07:06.695>day

168
00:07:08.055 --> 00:07:10.435
<00:07:08.055>and <00:07:08.210>we <00:07:08.366>move <00:07:08.521>the <00:07:08.677>whole <00:07:08.832>thing <00:07:08.988>into <00:07:09.143>a <00:07:09.299>Kubernetes <00:07:09.455>cluster

169
00:07:10.575 --> 00:07:12.755
<00:07:10.575>so <00:07:10.854>we <00:07:11.135>can <00:07:11.414>scale <00:07:11.695>it <00:07:11.974>reasonably

170
00:07:13.825 --> 00:07:17.675
<00:07:13.825>cost <00:07:13.965>effective <00:07:14.104>at <00:07:14.245>some <00:07:14.385>point <00:07:14.525>we <00:07:14.664>have <00:07:14.805>then <00:07:14.945>written <00:07:15.085>more <00:07:15.224>glue

171
00:07:17.685 --> 00:07:19.155
<00:07:17.685>codes <00:07:18.015>and <00:07:18.346>actual <00:07:18.677>production <00:07:19.008>code

172
00:07:19.155 --> 00:07:23.515
<00:07:19.155>and <00:07:19.282>then <00:07:19.409>we <00:07:19.536>think <00:07:19.664>really <00:07:19.791>hard <00:07:19.918>and <00:07:20.045>yeah, <00:07:20.173>think <00:07:20.300>about <00:07:20.427>our <00:07:20.554>sins

173
00:07:23.515 --> 00:07:26.275
<00:07:23.515>and <00:07:23.655>start <00:07:23.794>looking <00:07:23.935>really <00:07:24.075>for <00:07:24.215>a <00:07:24.354>tool <00:07:24.495>that <00:07:24.635>can <00:07:24.775>support <00:07:24.914>us.

174
00:07:26.575 --> 00:07:28.555
<00:07:26.575>And <00:07:26.775>that <00:07:26.974>is <00:07:27.175>where <00:07:27.375>Argo <00:07:27.575>comes <00:07:27.775>into <00:07:27.974>play.

175
00:07:29.735 --> 00:07:31.435
<00:07:29.735>AR <00:07:30.015>workflows <00:07:30.295>is <00:07:30.575>a <00:07:30.855>cloud <00:07:31.135>native

176
00:07:31.495 --> 00:07:34.595
<00:07:31.495>and <00:07:31.728>Kubernetes <00:07:31.961>native <00:07:32.195>open <00:07:32.428>source <00:07:32.661>workflow <00:07:32.895>engine

177
00:07:34.595 --> 00:07:38.755
<00:07:34.595>that <00:07:34.770>allows <00:07:34.945>you <00:07:35.120>to <00:07:35.295>orchestrate <00:07:35.470>complex <00:07:35.645>multi <00:07:35.820>stage <00:07:35.995>processes

178
00:07:39.015 --> 00:07:40.235
<00:07:39.015>on <00:07:39.381>your <00:07:39.747>Kubernetes <00:07:40.113>cluster.

179
00:07:40.885 --> 00:07:43.635
<00:07:40.885>There <00:07:41.025>are <00:07:41.164>really <00:07:41.305>many <00:07:41.445>tools <00:07:41.585>that <00:07:41.724>allow <00:07:41.865>you <00:07:42.005>to <00:07:42.145>run <00:07:42.284>pipelines

180
00:07:43.635 --> 00:07:44.955
<00:07:43.635>or <00:07:43.872>workflows, <00:07:44.110>but <00:07:44.347>only <00:07:44.585>a <00:07:44.823>handful

181
00:07:45.015 --> 00:07:46.595
<00:07:45.015>of <00:07:45.294>tools <00:07:45.575>are <00:07:45.854>really <00:07:46.135>cloud <00:07:46.414>native

182
00:07:47.055 --> 00:07:49.475
<00:07:47.055>and <00:07:47.288>leverage <00:07:47.521>the <00:07:47.755>full <00:07:47.988>power <00:07:48.221>of <00:07:48.455>Kubernetes

183
00:07:49.695 --> 00:07:52.275
<00:07:49.695>and <00:07:49.850>are <00:07:50.006>also <00:07:50.161>open <00:07:50.317>source <00:07:50.472>tools <00:07:50.628>with <00:07:50.783>an <00:07:50.939>active <00:07:51.094>community.

184
00:07:52.695 --> 00:07:55.315
<00:07:52.695>In <00:07:52.835>my <00:07:52.974>opinion, <00:07:53.115>AR <00:07:53.255>workflows <00:07:53.395>is <00:07:53.534>just <00:07:53.675>the <00:07:53.815>best <00:07:53.955>of <00:07:54.094>them.

185
00:07:55.585 --> 00:07:57.835
<00:07:55.585>With <00:07:55.818>AR <00:07:56.051>workflows, <00:07:56.284>you <00:07:56.518>can <00:07:56.751>define, <00:07:56.984>execute

186
00:07:57.855 --> 00:08:01.675
<00:07:57.855>and <00:07:58.010>manage <00:07:58.166>workflows <00:07:58.321>as <00:07:58.477>QEs <00:07:58.632>resources <00:07:58.788>and <00:07:58.943>leverage <00:07:59.099>the <00:07:59.255>power

187
00:08:01.775 --> 00:08:04.115
<00:08:01.775>and <00:08:02.008>scalability <00:08:02.241>of <00:08:02.474>Kubernetes <00:08:02.708>for <00:08:02.941>your <00:08:03.174>data.

188
00:08:04.115 --> 00:08:07.915
<00:08:04.115>Pre-processing, <00:08:04.315>machine <00:08:04.515>learning <00:08:04.715>and <00:08:04.915>CI <00:08:05.115>and <00:08:05.315>CD <00:08:05.515>pipelines.

189
00:08:10.985 --> 00:08:12.915
<00:08:10.985>When <00:08:11.185>you <00:08:11.385>use <00:08:11.585>Argo <00:08:11.785>workflows <00:08:11.985>for <00:08:12.185>your <00:08:12.385>task,

190
00:08:13.835 --> 00:08:16.635
<00:08:13.835>a <00:08:13.990>workflow <00:08:14.146>is <00:08:14.301>really <00:08:14.457>the <00:08:14.612>main <00:08:14.768>component <00:08:14.923>obviously <00:08:15.079>you <00:08:15.234>will

191
00:08:16.915 --> 00:08:18.755
<00:08:16.915>interact <00:08:17.265>with <00:08:17.615>at <00:08:17.965>its <00:08:18.315>core.

192
00:08:18.855 --> 00:08:21.635
<00:08:18.855>An <00:08:19.088>Argo <00:08:19.321>workflow <00:08:19.555>is <00:08:19.788>a <00:08:20.021>directed <00:08:20.255>graph

193
00:08:22.025 --> 00:08:24.795
<00:08:22.025>that <00:08:22.200>specifies <00:08:22.375>the <00:08:22.549>order <00:08:22.724>in <00:08:22.900>which <00:08:23.075>a <00:08:23.250>certain <00:08:23.424>set

194
00:08:24.795 --> 00:08:27.955
<00:08:24.795>of <00:08:24.970>Kubernetes <00:08:25.145>POS <00:08:25.320>should <00:08:25.495>be <00:08:25.670>executed <00:08:25.845>along <00:08:26.020>with <00:08:26.195>their

195
00:08:28.475 --> 00:08:29.795
<00:08:28.475>respective <00:08:28.871>inputs <00:08:29.267>and <00:08:29.663>outputs.

196
00:08:29.795 --> 00:08:32.395
<00:08:29.795>Technically <00:08:30.028>it's <00:08:30.261>just <00:08:30.495>a <00:08:30.728>custom <00:08:30.961>resource <00:08:31.195>definition

197
00:08:32.395 --> 00:08:33.515
<00:08:32.395>of <00:08:32.731>CRD <00:08:33.067>and <00:08:33.403>ator.

198
00:08:33.975 --> 00:08:36.635
<00:08:33.975>So <00:08:34.115>that <00:08:34.255>means <00:08:34.395>that <00:08:34.534>the <00:08:34.675>choose <00:08:34.815>about <00:08:34.955>workflow <00:08:35.095>always <00:08:35.235>lives <00:08:35.375>in

199
00:08:36.635 --> 00:08:39.315
<00:08:36.635>the <00:08:36.868>cluster <00:08:37.101>and <00:08:37.335>each <00:08:37.568>workflows, <00:08:37.801>um, <00:08:38.034>then

200
00:08:39.575 --> 00:08:42.755
<00:08:39.575>or <00:08:39.702>each <00:08:39.829>step <00:08:39.956>in <00:08:40.084>the <00:08:40.211>workflow <00:08:40.338>once <00:08:40.465>then <00:08:40.593>in <00:08:40.720>the <00:08:40.847>ator <00:08:40.975>spot.

201
00:08:42.895 --> 00:08:46.275
<00:08:42.895>And <00:08:43.011>because <00:08:43.128>each <00:08:43.245>step <00:08:43.361>once <00:08:43.478>in <00:08:43.595>its <00:08:43.711>own <00:08:43.828>pot, <00:08:43.944>you <00:08:44.061>can <00:08:44.178>use <00:08:44.295>tools

202
00:08:46.455 --> 00:08:48.195
<00:08:46.455>and <00:08:46.735>scripts <00:08:47.015>and <00:08:47.295>programs <00:08:47.575>written <00:08:47.855>in.

203
00:08:48.195 --> 00:08:50.715
<00:08:48.195>Yeah, <00:08:48.395>many <00:08:48.595>different <00:08:48.795>languages <00:08:48.995>all <00:08:49.195>in <00:08:49.395>one <00:08:49.595>workflow.

204
00:08:50.895 --> 00:08:54.555
<00:08:50.895>And <00:08:51.022>as <00:08:51.149>long <00:08:51.276>as <00:08:51.404>your <00:08:51.531>tool <00:08:51.658>can <00:08:51.785>somehow <00:08:51.913>be <00:08:52.040>packaged <00:08:52.167>into <00:08:52.295>a

205
00:08:54.555 --> 00:08:56.365
<00:08:54.555>container, <00:08:54.834>you <00:08:55.114>can <00:08:55.395>then <00:08:55.675>use <00:08:55.954>Argo.

206
00:08:56.385 --> 00:09:00.445
<00:08:56.385>So <00:08:56.525>if <00:08:56.665>you <00:08:56.805>really <00:08:56.944>insist <00:08:57.085>on <00:08:57.225>running <00:08:57.365>COBOL <00:08:57.505>in <00:08:57.645>your <00:08:57.785>workflow,

207
00:09:00.545 --> 00:09:02.685
<00:09:00.545>it <00:09:00.745>should <00:09:00.944>be <00:09:01.145>possible <00:09:01.344>if <00:09:01.545>you <00:09:01.745>can <00:09:01.944>somehow

208
00:09:02.705 --> 00:09:04.045
<00:09:02.705>manage <00:09:02.946>to <00:09:03.187>pack <00:09:03.428>it <00:09:03.669>in <00:09:03.911>Docker.

209
00:09:04.185 --> 00:09:08.525
<00:09:04.185>So <00:09:04.340>is <00:09:04.496>anybody <00:09:04.651>running <00:09:04.807>COBOL <00:09:04.962>in <00:09:05.118>Docker <00:09:05.273>here <00:09:05.429>currently? <00:09:05.584>No.

210
00:09:08.545 --> 00:09:10.805
<00:09:08.545>Oh, <00:09:08.745>sorry. <00:09:08.944>I'm <00:09:09.145>always <00:09:09.344>waiting <00:09:09.545>to <00:09:09.745>see <00:09:09.944>somebody

211
00:09:11.145 --> 00:09:13.445
<00:09:11.145>who <00:09:11.300>actually <00:09:11.456>does <00:09:11.611>this, <00:09:11.767>so <00:09:11.922>that <00:09:12.078>would <00:09:12.233>be <00:09:12.389>really <00:09:12.545>great.

212
00:09:13.465 --> 00:09:14.645
<00:09:13.465>So <00:09:13.819>maybe <00:09:14.173>next <00:09:14.527>time.

213
00:09:15.275 --> 00:09:18.325
<00:09:15.275>Alright, <00:09:15.430>so <00:09:15.586>your <00:09:15.741>CID <00:09:15.897>is <00:09:16.052>just <00:09:16.208>one <00:09:16.363>part <00:09:16.519>of <00:09:16.675>Argo,

214
00:09:18.325 --> 00:09:19.725
<00:09:18.325>then <00:09:18.640>there's <00:09:18.955>the <00:09:19.270>workflow <00:09:19.585>controller.

215
00:09:19.865 --> 00:09:21.605
<00:09:19.865>It <00:09:20.040>lives <00:09:20.215>in <00:09:20.390>its <00:09:20.565>own <00:09:20.740>q <00:09:20.915>and <00:09:21.090>a <00:09:21.265>spot

216
00:09:21.605 --> 00:09:23.285
<00:09:21.605>and <00:09:21.885>it's <00:09:22.165>essentially <00:09:22.445>a <00:09:22.725>large <00:09:23.005>function

217
00:09:23.515 --> 00:09:25.885
<00:09:23.515>that <00:09:23.981>transforms <00:09:24.448>workflow <00:09:24.915>resources.

218
00:09:26.225 --> 00:09:28.125
<00:09:26.225>So <00:09:26.380>when <00:09:26.536>Argo <00:09:26.691>wants <00:09:26.847>to <00:09:27.002>do <00:09:27.158>something <00:09:27.313>to <00:09:27.469>the <00:09:27.625>workflow,

219
00:09:28.265 --> 00:09:31.325
<00:09:28.265>it <00:09:28.405>reads <00:09:28.545>the <00:09:28.685>workflow <00:09:28.824>data <00:09:28.965>from <00:09:29.105>the <00:09:29.245>workflow <00:09:29.385>resource <00:09:29.525>on <00:09:29.665>the

220
00:09:31.325 --> 00:09:32.885
<00:09:31.325>cluster, <00:09:31.791>apply <00:09:32.258>some <00:09:32.725>function,

221
00:09:32.885 --> 00:09:34.805
<00:09:32.885>so <00:09:33.085>it <00:09:33.285>starts <00:09:33.485>some <00:09:33.685>pots <00:09:33.885>write <00:09:34.085>some <00:09:34.285>data,

222
00:09:35.225 --> 00:09:37.045
<00:09:35.225>and <00:09:35.425>then, <00:09:35.625>uh, <00:09:35.825>it <00:09:36.025>writes <00:09:36.225>this <00:09:36.425>data <00:09:36.625>back

223
00:09:37.045 --> 00:09:38.085
<00:09:37.045>to <00:09:37.357>the <00:09:37.669>workflow <00:09:37.981>resource.

224
00:09:39.105 --> 00:09:42.685
<00:09:39.105>But <00:09:39.260>if <00:09:39.416>this <00:09:39.571>controller <00:09:39.727>pot <00:09:39.882>is <00:09:40.038>ac <00:09:40.193>uh, <00:09:40.349>accidentally <00:09:40.505>deleted,

225
00:09:42.755 --> 00:09:43.765
<00:09:42.755>it's <00:09:42.936>really <00:09:43.118>not <00:09:43.300>a <00:09:43.482>big <00:09:43.664>deal

226
00:09:43.765 --> 00:09:45.845
<00:09:43.765>because <00:09:44.231>it's <00:09:44.698>essentially <00:09:45.165>stateless.

227
00:09:46.105 --> 00:09:49.645
<00:09:46.105>So <00:09:46.260>all <00:09:46.416>the <00:09:46.571>workflow <00:09:46.727>information <00:09:46.882>are <00:09:47.038>stored <00:09:47.193>in <00:09:47.349>the <00:09:47.505>workflow

228
00:09:50.005 --> 00:09:52.255
<00:09:50.005>resources <00:09:50.285>and <00:09:50.564>then <00:09:50.845>there's <00:09:51.125>the <00:09:51.405>server.

229
00:09:52.355 --> 00:09:55.335
<00:09:52.355>It <00:09:52.555>provides <00:09:52.755>really <00:09:52.955>an <00:09:53.155>API <00:09:53.355>to <00:09:53.555>control <00:09:53.755>workflows

230
00:09:55.335 --> 00:09:56.815
<00:09:55.335>and <00:09:55.668>um, <00:09:56.001>quite <00:09:56.334>useful <00:09:56.667>gui,

231
00:09:56.995 --> 00:09:58.775
<00:09:56.995>but <00:09:57.345>the <00:09:57.695>server <00:09:58.045>never <00:09:58.395>communicates

232
00:09:58.775 --> 00:10:00.055
<00:09:58.775>with <00:09:59.159>the <00:09:59.543>controller <00:09:59.926>directly.

233
00:10:00.595 --> 00:10:03.695
<00:10:00.595>All <00:10:00.750>communication <00:10:00.906>is <00:10:01.061>done <00:10:01.217>via <00:10:01.372>the <00:10:01.528>workflow <00:10:01.683>resources <00:10:01.839>in <00:10:01.995>ku.

234
00:10:04.165 --> 00:10:07.535
<00:10:04.165>This <00:10:04.320>also <00:10:04.476>means <00:10:04.631>that <00:10:04.787>I <00:10:04.942>don't <00:10:05.098>necessarily <00:10:05.253>need <00:10:05.409>this <00:10:05.564>server.

235
00:10:08.035 --> 00:10:10.935
<00:10:08.035>In <00:10:08.209>fact, <00:10:08.385>I <00:10:08.560>can <00:10:08.735>create <00:10:08.910>workflows <00:10:09.084>directly <00:10:09.260>in <00:10:09.435>Kubernetes,

236
00:10:11.195 --> 00:10:14.695
<00:10:11.195>for <00:10:11.322>example, <00:10:11.449>with <00:10:11.576>Cube <00:10:11.704>CDL, <00:10:11.831>and <00:10:11.958>I <00:10:12.085>will <00:10:12.213>show <00:10:12.340>you <00:10:12.467>that <00:10:12.595>later.

237
00:10:15.555 --> 00:10:18.455
<00:10:15.555>But <00:10:15.710>first, <00:10:15.866>how <00:10:16.021>do <00:10:16.177>we <00:10:16.332>create <00:10:16.488>such <00:10:16.643>a <00:10:16.799>magical <00:10:16.954>workflow?

238
00:10:18.795 --> 00:10:20.895
<00:10:18.795>So <00:10:19.074>workflows, <00:10:19.354>I've <00:10:19.635>written <00:10:19.915>Yammer, <00:10:20.194>um,

239
00:10:21.275 --> 00:10:22.935
<00:10:21.275>and <00:10:21.449>to <00:10:21.625>make <00:10:21.800>it <00:10:21.975>a <00:10:22.150>little <00:10:22.324>bit <00:10:22.500>more <00:10:22.675>clear

240
00:10:23.075 --> 00:10:24.535
<00:10:23.075>how <00:10:23.403>a <00:10:23.732>simple <00:10:24.060>workflow <00:10:24.389>structured,

241
00:10:24.895 --> 00:10:26.575
<00:10:24.895>I <00:10:25.175>first <00:10:25.454>brought <00:10:25.735>along <00:10:26.015>a <00:10:26.295>simple

242
00:10:27.135 --> 00:10:28.575
<00:10:27.135>Kotlin <00:10:27.459>program, <00:10:27.783>so <00:10:28.107>not <00:10:28.431>Yammer.

243
00:10:28.915 --> 00:10:30.535
<00:10:28.915>Um, <00:10:29.265>it's <00:10:29.615>really <00:10:29.964>super <00:10:30.314>simple.

244
00:10:30.555 --> 00:10:32.095
<00:10:30.555>We <00:10:30.786>take <00:10:31.016>a <00:10:31.247>fourth <00:10:31.479>load <00:10:31.710>in, <00:10:31.941>uh,

245
00:10:32.095 --> 00:10:35.135
<00:10:32.095>the <00:10:32.235>four <00:10:32.375>into <00:10:32.515>a <00:10:32.655>function <00:10:32.795>at <00:10:32.935>three, <00:10:33.075>the <00:10:33.215>function <00:10:33.355>at <00:10:33.495>three,

246
00:10:35.395 --> 00:10:37.095
<00:10:35.395>we <00:10:35.628>pass <00:10:35.861>the <00:10:36.095>result <00:10:36.328>into <00:10:36.561>another <00:10:36.795>function

247
00:10:37.445 --> 00:10:39.615
<00:10:37.445>that <00:10:37.678>outputs <00:10:37.911>the <00:10:38.145>number <00:10:38.378>along <00:10:38.611>with <00:10:38.845>text.

248
00:10:39.795 --> 00:10:43.255
<00:10:39.795>So, <00:10:39.950>and <00:10:40.106>now <00:10:40.261>we <00:10:40.417>want <00:10:40.572>to <00:10:40.728>restructure <00:10:40.883>this <00:10:41.039>Kotlin <00:10:41.194>program

249
00:10:43.635 --> 00:10:44.815
<00:10:43.635>to <00:10:43.989>be <00:10:44.343>a <00:10:44.697>workflow.

250
00:10:45.235 --> 00:10:46.495
<00:10:45.235>How <00:10:45.461>would <00:10:45.688>do <00:10:45.915>we <00:10:46.142>do <00:10:46.369>that?

251
00:10:47.465 --> 00:10:49.615
<00:10:47.465>Let's <00:10:47.665>start <00:10:47.865>with <00:10:48.065>the <00:10:48.265>say <00:10:48.465>hello <00:10:48.665>number <00:10:48.865>function.

252
00:10:50.115 --> 00:10:51.975
<00:10:50.115>We <00:10:50.348>define <00:10:50.581>a <00:10:50.815>step <00:10:51.048>in <00:10:51.281>the <00:10:51.515>workflow

253
00:10:51.975 --> 00:10:53.335
<00:10:51.975>as <00:10:52.179>an <00:10:52.383>object <00:10:52.587>in <00:10:52.791>a <00:10:52.995>Yammer <00:10:53.199>list,

254
00:10:53.635 --> 00:10:55.015
<00:10:53.635>and <00:10:53.883>we <00:10:54.131>give <00:10:54.380>that <00:10:54.628>workflow <00:10:54.877>step

255
00:10:55.015 --> 00:10:56.935
<00:10:55.015>and <00:10:55.248>name, <00:10:55.481>which <00:10:55.715>is <00:10:55.948>say <00:10:56.181>hello <00:10:56.415>number.

256
00:10:57.405 --> 00:10:59.255
<00:10:57.405>Then <00:10:57.685>we <00:10:57.964>define <00:10:58.245>our <00:10:58.525>input <00:10:58.805>parameter,

257
00:10:59.255 --> 00:11:01.615
<00:10:59.255>which <00:10:59.488>we <00:10:59.721>call <00:10:59.955>B <00:11:00.188>because <00:11:00.421>why <00:11:00.655>not?

258
00:11:02.035 --> 00:11:04.095
<00:11:02.035>Um, <00:11:02.314>since <00:11:02.594>every <00:11:02.875>step <00:11:03.155>in <00:11:03.435>Argo,

259
00:11:04.095 --> 00:11:06.695
<00:11:04.095>once <00:11:04.235>in <00:11:04.375>the <00:11:04.515>container <00:11:04.655>in <00:11:04.795>the <00:11:04.935>pot, <00:11:05.075>we <00:11:05.215>need <00:11:05.355>a <00:11:05.495>container.

260
00:11:07.035 --> 00:11:09.215
<00:11:07.035>So <00:11:07.209>here <00:11:07.385>we <00:11:07.560>just <00:11:07.735>take <00:11:07.910>a <00:11:08.084>a <00:11:08.260>window <00:11:08.435>container

261
00:11:09.315 --> 00:11:11.815
<00:11:09.315>and <00:11:09.470>now <00:11:09.626>we <00:11:09.781>tell <00:11:09.937>the <00:11:10.092>workflow <00:11:10.248>which <00:11:10.403>command <00:11:10.559>we <00:11:10.715>want

262
00:11:11.815 --> 00:11:13.775
<00:11:11.815>to <00:11:11.990>execute <00:11:12.165>in <00:11:12.340>the <00:11:12.515>container <00:11:12.690>here <00:11:12.865>it's <00:11:13.040>the <00:11:13.215>shell.

263
00:11:13.775 --> 00:11:16.655
<00:11:13.775>So <00:11:13.930>SH <00:11:14.086>then <00:11:14.241>we <00:11:14.397>specify <00:11:14.552>the <00:11:14.708>arguments <00:11:14.863>for <00:11:15.019>the <00:11:15.175>shell.

264
00:11:16.675 --> 00:11:18.455
<00:11:16.675>So <00:11:16.908>the <00:11:17.141>actual <00:11:17.375>script <00:11:17.608>that <00:11:17.841>we <00:11:18.074>want

265
00:11:18.455 --> 00:11:20.375
<00:11:18.455>to <00:11:18.655>run <00:11:18.855>in <00:11:19.055>our <00:11:19.255>case, <00:11:19.455>simple <00:11:19.655>echo <00:11:19.855>command.

266
00:11:20.675 --> 00:11:23.615
<00:11:20.675>And <00:11:20.849>then <00:11:21.025>we <00:11:21.199>access <00:11:21.375>our <00:11:21.550>power, <00:11:21.724>uh, <00:11:21.900>parameters <00:11:22.074>with

267
00:11:24.465 --> 00:11:27.295
<00:11:24.465>curly <00:11:24.745>braces <00:11:25.025>and <00:11:25.305>inputs, <00:11:25.585>parameters <00:11:25.865>B.

268
00:11:29.335 --> 00:11:30.875
<00:11:29.335>And <00:11:29.566>then <00:11:29.797>for <00:11:30.028>the <00:11:30.259>add <00:11:30.490>three <00:11:30.721>function,

269
00:11:30.895 --> 00:11:33.715
<00:11:30.895>we <00:11:31.095>do <00:11:31.295>basically <00:11:31.495>the <00:11:31.694>same, <00:11:31.895>um, <00:11:32.095>same <00:11:32.295>container.

270
00:11:33.715 --> 00:11:35.995
<00:11:33.715>This <00:11:33.870>time <00:11:34.026>the <00:11:34.181>input <00:11:34.337>is <00:11:34.492>called <00:11:34.648>A <00:11:34.803>instead <00:11:34.959>of <00:11:35.115>B

271
00:11:35.995 --> 00:11:37.675
<00:11:35.995>because <00:11:36.275>I'm <00:11:36.555>very <00:11:36.835>creative <00:11:37.115>with <00:11:37.395>variable

272
00:11:37.675 --> 00:11:38.875
<00:11:37.675>names <00:11:37.891>like <00:11:38.107>all <00:11:38.323>of <00:11:38.539>you, <00:11:38.755>right?

273
00:11:39.295 --> 00:11:41.675
<00:11:39.295>Um, <00:11:39.469>and <00:11:39.645>with <00:11:39.819>a <00:11:39.995>little <00:11:40.170>bit <00:11:40.344>of <00:11:40.520>shell <00:11:40.694>magic,

274
00:11:41.735 --> 00:11:43.555
<00:11:41.735>we <00:11:42.015>add <00:11:42.295>three <00:11:42.575>to <00:11:42.855>the <00:11:43.135>input.

275
00:11:44.345 --> 00:11:46.515
<00:11:44.345>Alright? <00:11:44.625>And <00:11:44.905>now <00:11:45.185>we <00:11:45.465>still <00:11:45.745>need

276
00:11:46.515 --> 00:11:48.275
<00:11:46.515>to <00:11:46.748>write <00:11:46.981>the <00:11:47.215>main <00:11:47.448>function <00:11:47.681>for <00:11:47.915>this.

277
00:11:48.275 --> 00:11:50.115
<00:11:48.275>We <00:11:48.508>do <00:11:48.741>not <00:11:48.975>take <00:11:49.208>a <00:11:49.441>container <00:11:49.675>template,

278
00:11:50.115 --> 00:11:53.765
<00:11:50.115>but <00:11:50.255>a <00:11:50.395>step <00:11:50.535>template <00:11:50.675>with <00:11:50.815>which <00:11:50.955>we <00:11:51.095>can <00:11:51.235>execute <00:11:51.375>several <00:11:51.515>steps.

279
00:11:53.865 --> 00:11:57.045
<00:11:53.865>One <00:11:53.992>after <00:11:54.119>the <00:11:54.246>other. <00:11:54.374>We <00:11:54.501>call <00:11:54.628>the <00:11:54.755>first <00:11:54.883>step <00:11:55.010>at <00:11:55.137>three <00:11:55.265>step,

280
00:11:57.805 --> 00:12:00.185
<00:11:57.805>but <00:11:57.960>we <00:11:58.116>could <00:11:58.271>call <00:11:58.427>it <00:11:58.582>basically <00:11:58.738>everything <00:11:58.893>what <00:11:59.049>we <00:11:59.204>want.

281
00:12:00.205 --> 00:12:01.985
<00:12:00.205>So <00:12:00.380>we <00:12:00.555>could <00:12:00.730>call <00:12:00.905>it <00:12:01.080>Paul <00:12:01.255>if <00:12:01.430>we <00:12:01.605>want.

282
00:12:02.885 --> 00:12:06.545
<00:12:02.885>And <00:12:03.012>the <00:12:03.139>second <00:12:03.266>one <00:12:03.394>is <00:12:03.521>a <00:12:03.648>say <00:12:03.775>hello, <00:12:03.903>step <00:12:04.030>in <00:12:04.157>these <00:12:04.285>steps.

283
00:12:06.725 --> 00:12:08.905
<00:12:06.725>We <00:12:06.925>then <00:12:07.125>reference <00:12:07.325>our <00:12:07.525>two <00:12:07.725>templates <00:12:07.925>at <00:12:08.125>three

284
00:12:09.005 --> 00:12:10.505
<00:12:09.005>and <00:12:09.455>say <00:12:09.905>hello <00:12:10.355>number.

285
00:12:11.005 --> 00:12:13.145
<00:12:11.005>Now <00:12:11.160>we <00:12:11.316>just <00:12:11.471>need <00:12:11.627>to <00:12:11.782>provide <00:12:11.938>our <00:12:12.093>two <00:12:12.249>a, <00:12:12.405>uh,

286
00:12:13.545 --> 00:12:14.865
<00:12:13.545>arguments, <00:12:13.941>uh, <00:12:14.337>with <00:12:14.733>values.

287
00:12:15.005 --> 00:12:18.065
<00:12:15.005>And <00:12:15.180>then <00:12:15.355>we <00:12:15.530>are <00:12:15.705>basically <00:12:15.880>done <00:12:16.055>to <00:12:16.230>do <00:12:16.405>this,

288
00:12:18.125 --> 00:12:20.985
<00:12:18.125>we <00:12:18.280>simply <00:12:18.436>specify <00:12:18.591>a <00:12:18.747>list <00:12:18.902>of <00:12:19.058>arguments <00:12:19.213>in <00:12:19.369>our <00:12:19.525>steps.

289
00:12:21.445 --> 00:12:23.625
<00:12:21.445>And <00:12:21.725>there <00:12:22.005>we <00:12:22.285>also <00:12:22.565>specify <00:12:22.845>parameters

290
00:12:23.815 --> 00:12:24.945
<00:12:23.815>each <00:12:24.069>with <00:12:24.323>name <00:12:24.577>and <00:12:24.832>value.

291
00:12:25.005 --> 00:12:27.585
<00:12:25.005>And <00:12:25.132>to <00:12:25.259>pass <00:12:25.386>the <00:12:25.514>result <00:12:25.641>of <00:12:25.768>at <00:12:25.895>three <00:12:26.023>into <00:12:26.150>the <00:12:26.277>say <00:12:26.405>hello

292
00:12:27.945 --> 00:12:31.425
<00:12:27.945>function, <00:12:28.100>we <00:12:28.256>simply <00:12:28.411>give <00:12:28.567>the <00:12:28.722>output <00:12:28.878>from <00:12:29.033>the <00:12:29.189>previous <00:12:29.345>step,

293
00:12:31.925 --> 00:12:36.265
<00:12:31.925>um, <00:12:32.099>the, <00:12:32.275>the <00:12:32.449>at <00:12:32.625>three <00:12:32.800>step <00:12:32.974>as <00:12:33.150>argument <00:12:33.324>value

294
00:12:36.535 --> 00:12:38.985
<00:12:36.535>with <00:12:36.735>the <00:12:36.935>template <00:12:37.135>notation <00:12:37.334>with <00:12:37.535>the <00:12:37.735>currently <00:12:37.935>braces.

295
00:12:39.445 --> 00:12:40.905
<00:12:39.445>And <00:12:39.883>that's <00:12:40.321>basically <00:12:40.759>it.

296
00:12:40.925 --> 00:12:43.865
<00:12:40.925>So <00:12:41.080>now <00:12:41.236>we <00:12:41.391>have <00:12:41.547>really <00:12:41.702>written <00:12:41.858>our <00:12:42.013>first <00:12:42.169>workflow <00:12:42.324>from

297
00:12:43.865 --> 00:12:44.985
<00:12:43.865>very <00:12:44.201>simple <00:12:44.537>Kotlin <00:12:44.873>program.

298
00:12:45.215 --> 00:12:46.345
<00:12:45.215>It's <00:12:45.360>a <00:12:45.505>little <00:12:45.650>bit <00:12:45.796>more <00:12:45.941>of <00:12:46.086>a <00:12:46.232>both,

299
00:12:46.405 --> 00:12:48.305
<00:12:46.405>but, <00:12:46.755>well <00:12:47.105>that's <00:12:47.454>Yammer, <00:12:47.805>right?

300
00:12:49.005 --> 00:12:52.165
<00:12:49.005>So, <00:12:49.160>and <00:12:49.316>now <00:12:49.471>I <00:12:49.627>show <00:12:49.782>you <00:12:49.938>a <00:12:50.093>little <00:12:50.249>demo <00:12:50.405>of

301
00:12:52.185 --> 00:12:54.005
<00:12:52.185>how <00:12:52.418>we <00:12:52.651>can <00:12:52.885>actually <00:12:53.118>run <00:12:53.351>this <00:12:53.584>workflow

302
00:12:54.005 --> 00:12:57.135
<00:12:54.005>because <00:12:54.238>that's <00:12:54.471>all <00:12:54.705>very <00:12:54.938>well <00:12:55.171>theoretical, <00:12:55.405>right?

303
00:12:58.165 --> 00:13:03.085
<00:12:58.165>Okay, <00:12:58.281>now <00:12:58.398>I <00:12:58.515>need <00:12:58.631>to <00:12:58.748>fiddle <00:12:58.865>a <00:12:58.981>little <00:12:59.098>bit <00:12:59.214>with <00:12:59.331>my <00:12:59.448>screen <00:12:59.564>here.

304
00:13:03.405 --> 00:13:08.105
<00:13:03.405>I <00:13:03.532>hope <00:13:03.659>that <00:13:03.786>works. <00:13:03.914>Haha. <00:13:04.041>Alright, <00:13:04.168>I <00:13:04.295>hope <00:13:04.423>you <00:13:04.550>can <00:13:04.677>read <00:13:04.805>this.

305
00:13:08.105 --> 00:13:11.025
<00:13:08.105>So, <00:13:08.245>as <00:13:08.385>I <00:13:08.525>said, <00:13:08.665>you <00:13:08.805>don't, <00:13:08.945>uh, <00:13:09.085>actually <00:13:09.225>need <00:13:09.365>the <00:13:09.505>GUI

306
00:13:11.025 --> 00:13:13.745
<00:13:11.025>or <00:13:11.180>the, <00:13:11.336>the <00:13:11.491>workflow <00:13:11.647>or <00:13:11.802>the <00:13:11.958>API <00:13:12.113>server <00:13:12.269>at <00:13:12.425>all.

307
00:13:13.905 --> 00:13:18.545
<00:13:13.905>I <00:13:14.032>can <00:13:14.159>apply <00:13:14.286>directly <00:13:14.414>my <00:13:14.541>workflows <00:13:14.668>with <00:13:14.795>Cube <00:13:14.923>CDL <00:13:15.050>at <00:13:15.177>the <00:13:15.305>top,

308
00:13:18.565 --> 00:13:21.225
<00:13:18.565>you <00:13:18.798>see, <00:13:19.031>um, <00:13:19.265>which <00:13:19.498>workflows <00:13:19.731>are <00:13:19.965>currently

309
00:13:21.225 --> 00:13:22.305
<00:13:21.225>running <00:13:21.468>in <00:13:21.711>my <00:13:21.954>local <00:13:22.197>cluster.

310
00:13:22.485 --> 00:13:23.705
<00:13:22.485>So <00:13:22.851>no <00:13:23.217>workflows <00:13:23.583>actually.

311
00:13:24.125 --> 00:13:28.305
<00:13:24.125>And <00:13:24.300>now <00:13:24.475>with <00:13:24.650>Cube <00:13:24.825>CDLI <00:13:25.000>can <00:13:25.175>run <00:13:25.350>one <00:13:25.525>workflow

312
00:13:28.405 --> 00:13:31.905
<00:13:28.405>and <00:13:28.532>that <00:13:28.659>is <00:13:28.786>the <00:13:28.914>demo <00:13:29.041>one <00:13:29.168>re <00:13:29.295>workflow <00:13:29.423>that <00:13:29.550>we <00:13:29.677>just <00:13:29.805>wrote.

313
00:13:32.125 --> 00:13:34.625
<00:13:32.125>So <00:13:32.265>you <00:13:32.405>can <00:13:32.545>see <00:13:32.685>the <00:13:32.825>workflow <00:13:32.965>is <00:13:33.105>showing <00:13:33.245>up <00:13:33.385>on <00:13:33.525>the

314
00:13:34.625 --> 00:13:35.985
<00:13:34.625>cluster <00:13:35.033>and <00:13:35.441>it's <00:13:35.849>running.

315
00:13:36.125 --> 00:13:38.665
<00:13:36.125>And <00:13:36.265>now <00:13:36.405>let's <00:13:36.545>take <00:13:36.685>a <00:13:36.825>look <00:13:36.965>at <00:13:37.105>the, <00:13:37.245>at <00:13:37.385>the <00:13:37.525>gui.

316
00:13:39.925 --> 00:13:42.705
<00:13:39.925>And <00:13:40.064>there <00:13:40.204>you <00:13:40.344>can <00:13:40.484>see <00:13:40.625>my <00:13:40.765>first <00:13:40.905>workflow <00:13:41.045>is <00:13:41.185>running <00:13:41.324>here.

317
00:13:43.005 --> 00:13:45.465
<00:13:43.005>We <00:13:43.285>have <00:13:43.564>like, <00:13:43.845>um, <00:13:44.125>three <00:13:44.405>steps.

318
00:13:45.965 --> 00:13:47.585
<00:13:45.965>One <00:13:46.198>is <00:13:46.431>the, <00:13:46.665>well, <00:13:46.898>the <00:13:47.131>main <00:13:47.365>step

319
00:13:47.585 --> 00:13:49.305
<00:13:47.585>that <00:13:47.865>coordinates <00:13:48.145>all <00:13:48.425>the <00:13:48.705>other <00:13:48.985>ones.

320
00:13:49.405 --> 00:13:52.465
<00:13:49.405>And <00:13:49.521>then <00:13:49.638>we <00:13:49.755>have <00:13:49.871>the <00:13:49.988>at <00:13:50.105>three <00:13:50.221>step <00:13:50.338>and <00:13:50.454>they <00:13:50.571>say <00:13:50.688>hello <00:13:50.805>step.

321
00:13:52.465 --> 00:13:55.625
<00:13:52.465>And <00:13:52.581>if <00:13:52.698>we <00:13:52.815>take <00:13:52.931>a <00:13:53.048>look <00:13:53.165>at <00:13:53.281>the <00:13:53.398>output, <00:13:53.515>we <00:13:53.631>go <00:13:53.748>to <00:13:53.865>locks

322
00:13:55.625 --> 00:13:58.665
<00:13:55.625>and <00:13:55.825>we <00:13:56.025>see <00:13:56.225>hey, <00:13:56.425>hey, <00:13:56.625>hello, <00:13:56.825>number <00:13:57.025>five.

323
00:13:58.805 --> 00:14:00.465
<00:13:58.805>So <00:13:59.084>it <00:13:59.364>seems <00:13:59.645>to <00:13:59.925>be <00:14:00.204>working.

324
00:14:01.165 --> 00:14:03.105
<00:14:01.165>Um, <00:14:01.515>we <00:14:01.865>could <00:14:02.214>also, <00:14:02.564>um,

325
00:14:03.475 --> 00:14:06.025
<00:14:03.475>start <00:14:03.675>a <00:14:03.875>workflow <00:14:04.075>directly <00:14:04.275>from, <00:14:04.475>from <00:14:04.675>the <00:14:04.875>server.

326
00:14:06.085 --> 00:14:08.185
<00:14:06.085>We <00:14:06.318>can <00:14:06.551>go <00:14:06.785>and <00:14:07.018>submit <00:14:07.251>new <00:14:07.485>workflow.

327
00:14:08.485 --> 00:14:11.625
<00:14:08.485>We <00:14:08.640>could <00:14:08.796>either <00:14:08.951>select <00:14:09.107>a <00:14:09.262>ready <00:14:09.418>made <00:14:09.573>workflow <00:14:09.729>template, <00:14:09.885>um,

328
00:14:11.885 --> 00:14:13.865
<00:14:11.885>or <00:14:12.118>we <00:14:12.351>can <00:14:12.585>create <00:14:12.818>a <00:14:13.051>new <00:14:13.285>workflow

329
00:14:13.925 --> 00:14:16.665
<00:14:13.925>and <00:14:14.080>we <00:14:14.236>could <00:14:14.391>use <00:14:14.547>it <00:14:14.702>like <00:14:14.858>here, <00:14:15.013>edit <00:14:15.169>the <00:14:15.324>yaml

330
00:14:16.725 --> 00:14:19.905
<00:14:16.725>or <00:14:16.925>just <00:14:17.125>click <00:14:17.325>create <00:14:17.525>and <00:14:17.725>see, <00:14:17.925>um, <00:14:18.125>workflow.

331
00:14:20.125 --> 00:14:22.705
<00:14:20.125>We <00:14:20.300>see <00:14:20.475>fancy <00:14:20.650>name <00:14:20.825>sparkly <00:14:21.000>octopus <00:14:21.175>is <00:14:21.350>then <00:14:21.525>started

332
00:14:22.765 --> 00:14:23.945
<00:14:22.765>and <00:14:23.296>runs <00:14:23.827>here.

333
00:14:24.765 --> 00:14:28.425
<00:14:24.765>So, <00:14:24.905>um, <00:14:25.045>this <00:14:25.185>is <00:14:25.324>how <00:14:25.465>you <00:14:25.605>can <00:14:25.745>create <00:14:25.885>really <00:14:26.025>simple <00:14:26.165>workflows

334
00:14:28.425 --> 00:14:31.225
<00:14:28.425>with <00:14:28.704>QCDL <00:14:28.984>or <00:14:29.265>in <00:14:29.545>the <00:14:29.824>ui.

335
00:14:32.565 --> 00:14:36.925
<00:14:32.565>And <00:14:32.720>now, <00:14:32.876>um, <00:14:33.031>let <00:14:33.187>me <00:14:33.342>switch <00:14:33.498>back <00:14:33.653>to <00:14:33.809>my <00:14:33.965>slides.

336
00:14:40.555 --> 00:14:44.085
<00:14:40.555>Okay. <00:14:40.729>That <00:14:40.905>was <00:14:41.079>really <00:14:41.255>very <00:14:41.430>simple, <00:14:41.604>simple <00:14:41.780>workflow, <00:14:41.954>right?

337
00:14:44.185 --> 00:14:46.525
<00:14:44.185>But <00:14:44.340>now <00:14:44.496>the <00:14:44.651>question <00:14:44.807>is <00:14:44.962>how <00:14:45.118>do <00:14:45.273>we <00:14:45.429>use <00:14:45.584>all

338
00:14:46.525 --> 00:14:47.645
<00:14:46.525>of <00:14:46.776>this <00:14:47.029>for <00:14:47.281>ML <00:14:47.533>ops?

339
00:14:47.865 --> 00:14:50.205
<00:14:47.865>So <00:14:48.145>let's <00:14:48.425>start <00:14:48.705>with <00:14:48.985>data <00:14:49.265>pipeline.

340
00:14:50.225 --> 00:14:54.445
<00:14:50.225>So <00:14:50.341>how <00:14:50.458>can <00:14:50.575>Argo <00:14:50.691>support <00:14:50.808>us <00:14:50.925>there <00:14:51.041>in <00:14:51.158>every <00:14:51.275>ML <00:14:51.391>project <00:14:51.508>we <00:14:51.625>have

341
00:14:54.445 --> 00:14:56.365
<00:14:54.445>really <00:14:54.645>to <00:14:54.845>shovel <00:14:55.045>data <00:14:55.245>from <00:14:55.445>left <00:14:55.645>to <00:14:55.845>right,

342
00:14:56.365 --> 00:14:57.925
<00:14:56.365>prepare <00:14:56.831>data <00:14:57.298>extract <00:14:57.765>features,

343
00:14:58.225 --> 00:15:00.485
<00:14:58.225>and <00:14:58.380>once <00:14:58.536>we <00:14:58.691>have <00:14:58.847>defined <00:14:59.002>the <00:14:59.158>data <00:14:59.313>pipeline, <00:14:59.469>we <00:14:59.625>want

344
00:15:00.485 --> 00:15:02.085
<00:15:00.485>to <00:15:00.835>run <00:15:01.185>this <00:15:01.535>continuously, <00:15:01.885>right?

345
00:15:02.305 --> 00:15:04.725
<00:15:02.305>And <00:15:02.460>often <00:15:02.616>we <00:15:02.771>want <00:15:02.927>to <00:15:03.082>run <00:15:03.238>many <00:15:03.393>steps <00:15:03.549>in <00:15:03.704>parallel.

346
00:15:04.785 --> 00:15:07.565
<00:15:04.785>And <00:15:04.912>for <00:15:05.039>this, <00:15:05.166>I <00:15:05.294>will <00:15:05.421>show <00:15:05.548>you <00:15:05.675>some <00:15:05.803>useful <00:15:05.930>features <00:15:06.057>in <00:15:06.185>Argo

347
00:15:07.565 --> 00:15:10.045
<00:15:07.565>and <00:15:07.740>there <00:15:07.915>will <00:15:08.090>be <00:15:08.265>another <00:15:08.440>small <00:15:08.615>demo <00:15:08.790>for <00:15:08.965>this.

348
00:15:10.985 --> 00:15:13.805
<00:15:10.985>For <00:15:11.160>data <00:15:11.335>pipelines, <00:15:11.510>we, <00:15:11.685>um, <00:15:11.860>do <00:15:12.035>not <00:15:12.210>just <00:15:12.385>want

349
00:15:13.865 --> 00:15:17.125
<00:15:13.865>to <00:15:14.020>use <00:15:14.176>one <00:15:14.331>number <00:15:14.487>or <00:15:14.642>one <00:15:14.798>string <00:15:14.953>as <00:15:15.109>input, <00:15:15.265>right?

350
00:15:17.225 --> 00:15:19.805
<00:15:17.225>Um, <00:15:17.425>most <00:15:17.625>of <00:15:17.825>the <00:15:18.025>times <00:15:18.225>we <00:15:18.425>want <00:15:18.625>to

351
00:15:20.325 --> 00:15:21.965
<00:15:20.325>download <00:15:20.558>some <00:15:20.791>data <00:15:21.025>from <00:15:21.258>a <00:15:21.491>cloud <00:15:21.725>storage,

352
00:15:21.965 --> 00:15:24.005
<00:15:21.965>some <00:15:22.120>files <00:15:22.276>from <00:15:22.431>a <00:15:22.587>cloud <00:15:22.742>storage <00:15:22.898>and <00:15:23.053>work <00:15:23.209>on <00:15:23.365>them.

353
00:15:24.545 --> 00:15:25.565
<00:15:24.545>And <00:15:24.851>for <00:15:25.157>the <00:15:25.463>upload

354
00:15:25.565 --> 00:15:27.165
<00:15:25.565>and <00:15:25.845>download <00:15:26.125>of <00:15:26.405>files, <00:15:26.685>we <00:15:26.965>could

355
00:15:27.185 --> 00:15:29.485
<00:15:27.185>of <00:15:27.418>course <00:15:27.651>write <00:15:27.885>some <00:15:28.118>from <00:15:28.351>web <00:15:28.584>code

356
00:15:29.485 --> 00:15:31.205
<00:15:29.485>or <00:15:29.660>G <00:15:29.835>BT <00:15:30.010>four <00:15:30.185>can <00:15:30.360>do <00:15:30.535>that <00:15:30.710>for <00:15:30.885>us,

357
00:15:31.225 --> 00:15:32.645
<00:15:31.225>but <00:15:31.544>it's <00:15:31.864>still <00:15:32.183>quite <00:15:32.502>annoying.

358
00:15:32.865 --> 00:15:34.565
<00:15:32.865>So <00:15:33.065>Argo <00:15:33.265>has <00:15:33.465>something <00:15:33.665>for <00:15:33.865>us <00:15:34.065>for <00:15:34.265>it,

359
00:15:34.905 --> 00:15:38.085
<00:15:34.905>and <00:15:35.105>that <00:15:35.305>is <00:15:35.505>artifacts, <00:15:35.704>both <00:15:35.905>inputs <00:15:36.105>and <00:15:36.305>outputs.

360
00:15:38.195 --> 00:15:40.045
<00:15:38.195>Artifacts. <00:15:38.545>Artifacts <00:15:38.895>are <00:15:39.245>really <00:15:39.595>then

361
00:15:40.045 --> 00:15:41.405
<00:15:40.045>loaded <00:15:40.453>from <00:15:40.861>an <00:15:41.269>artifact.

362
00:15:41.405 --> 00:15:44.245
<00:15:41.405>Repositories <00:15:41.638>could <00:15:41.871>be, <00:15:42.105>um, <00:15:42.338>Google <00:15:42.571>cloud <00:15:42.805>storage,

363
00:15:44.295 --> 00:15:45.885
<00:15:44.295>Azure <00:15:44.761>storage, <00:15:45.228>S <00:15:45.694>three,

364
00:15:46.225 --> 00:15:49.765
<00:15:46.225>but <00:15:46.380>you <00:15:46.536>can <00:15:46.691>also <00:15:46.847>download <00:15:47.002>data <00:15:47.158>with <00:15:47.313>an <00:15:47.469>HDP <00:15:47.625>call

365
00:15:50.025 --> 00:15:51.285
<00:15:50.025>or <00:15:50.308>from <00:15:50.592>a <00:15:50.875>GI <00:15:51.159>repository.

366
00:15:52.215 --> 00:15:54.645
<00:15:52.215>Um, <00:15:52.495>so <00:15:52.775>it <00:15:53.055>looks <00:15:53.335>like <00:15:53.615>this,

367
00:15:54.645 --> 00:15:57.325
<00:15:54.645>that <00:15:54.878>we <00:15:55.111>define <00:15:55.345>input <00:15:55.578>artifacts <00:15:55.811>in <00:15:56.045>parallel

368
00:15:57.325 --> 00:15:58.645
<00:15:57.325>to <00:15:57.721>the <00:15:58.117>input <00:15:58.513>parameters.

369
00:15:59.025 --> 00:16:01.365
<00:15:59.025>And <00:15:59.225>so <00:15:59.425>the <00:15:59.625>normal <00:15:59.824>parameters <00:16:00.025>for, <00:16:00.225>for <00:16:00.425>numbers

370
00:16:01.505 --> 00:16:04.165
<00:16:01.505>or <00:16:01.680>strings <00:16:01.855>instead <00:16:02.030>of <00:16:02.205>value, <00:16:02.380>we <00:16:02.555>specify <00:16:02.730>a <00:16:02.905>path

371
00:16:04.165 --> 00:16:06.365
<00:16:04.165>where <00:16:04.398>our <00:16:04.631>container <00:16:04.865>can <00:16:05.098>find <00:16:05.331>the <00:16:05.564>artifact.

372
00:16:06.545 --> 00:16:08.325
<00:16:06.545>And <00:16:06.778>then <00:16:07.011>we <00:16:07.245>still <00:16:07.478>need <00:16:07.711>to <00:16:07.944>define

373
00:16:08.325 --> 00:16:10.885
<00:16:08.325>where <00:16:08.465>the <00:16:08.605>artifact <00:16:08.745>should <00:16:08.885>be <00:16:09.025>load <00:16:09.165>from <00:16:09.305>depending <00:16:09.445>on <00:16:09.585>the <00:16:09.725>art,

374
00:16:11.065 --> 00:16:12.405
<00:16:11.065>uh, <00:16:11.668>factory <00:16:12.271>repository.

375
00:16:12.475 --> 00:16:14.165
<00:16:12.475>It's <00:16:12.708>always <00:16:12.941>a <00:16:13.175>little <00:16:13.408>bit <00:16:13.641>different <00:16:13.875>here.

376
00:16:14.165 --> 00:16:15.805
<00:16:14.165>We <00:16:14.398>simply <00:16:14.631>specify <00:16:14.865>an <00:16:15.098>S <00:16:15.331>three <00:16:15.564>bucket

377
00:16:16.105 --> 00:16:18.285
<00:16:16.105>and <00:16:16.280>the <00:16:16.455>key <00:16:16.630>where <00:16:16.805>we <00:16:16.980>can <00:16:17.155>find <00:16:17.330>the <00:16:17.505>file.

378
00:16:18.825 --> 00:16:21.565
<00:16:18.825>And <00:16:19.025>I <00:16:19.225>will <00:16:19.425>show <00:16:19.625>you <00:16:19.825>how <00:16:20.025>this <00:16:20.225>works

379
00:16:22.445 --> 00:16:23.885
<00:16:22.445>actually <00:16:23.093>in <00:16:23.741>Argo.

380
00:16:24.705 --> 00:16:29.545
<00:16:24.705>So <00:16:24.832>let's <00:16:24.959>again <00:16:25.086>switch <00:16:25.214>over <00:16:25.341>and <00:16:25.468>hope <00:16:25.595>that <00:16:25.723>I <00:16:25.850>do <00:16:25.977>this <00:16:26.105>right.

381
00:16:30.025 --> 00:16:31.305
<00:16:30.025>I <00:16:30.313>prepared <00:16:30.601>a <00:16:30.889>little <00:16:31.176>something.

382
00:16:31.765 --> 00:16:35.185
<00:16:31.765>Um, <00:16:32.045>I <00:16:32.324>will <00:16:32.605>first <00:16:32.885>submit <00:16:33.165>this

383
00:16:35.185 --> 00:16:36.265
<00:16:35.185>and <00:16:35.379>then <00:16:35.573>I <00:16:35.768>will <00:16:35.962>show <00:16:36.156>you

384
00:16:36.265 --> 00:16:38.185
<00:16:36.265>what <00:16:36.465>I <00:16:36.665>have <00:16:36.865>written <00:16:37.064>here <00:16:37.265>in <00:16:37.465>the <00:16:37.665>template.

385
00:16:39.145 --> 00:16:41.985
<00:16:39.145>I <00:16:39.285>will <00:16:39.425>go <00:16:39.564>to <00:16:39.704>the <00:16:39.845>template <00:16:39.985>again, <00:16:40.125>hide <00:16:40.265>the <00:16:40.405>ugly <00:16:40.545>metadata

386
00:16:41.985 --> 00:16:43.465
<00:16:41.985>that <00:16:42.318>comes <00:16:42.651>from <00:16:42.984>Cube <00:16:43.317>CDL.

387
00:16:43.885 --> 00:16:46.345
<00:16:43.885>So <00:16:44.060>it's <00:16:44.235>really, <00:16:44.410>again, <00:16:44.585>a <00:16:44.760>very <00:16:44.935>simple <00:16:45.110>workflow <00:16:45.285>here.

388
00:16:46.445 --> 00:16:48.865
<00:16:46.445>Um, <00:16:46.725>it's, <00:16:47.005>yeah, <00:16:47.285>just <00:16:47.565>one <00:16:47.845>step.

389
00:16:49.245 --> 00:16:52.705
<00:16:49.245>The <00:16:49.420>download, <00:16:49.595>unzip <00:16:49.770>upload <00:16:49.945>step. <00:16:50.120>So <00:16:50.295>very <00:16:50.470>creatively <00:16:50.645>named.

390
00:16:53.005 --> 00:16:54.425
<00:16:53.005>We <00:16:53.324>have, <00:16:53.644>um, <00:16:53.963>two <00:16:54.282>inputs.

391
00:16:54.425 --> 00:16:55.585
<00:16:54.425>We <00:16:54.685>have <00:16:54.947>an <00:16:55.208>input <00:16:55.469>parameter,

392
00:16:55.585 --> 00:16:57.305
<00:16:55.585>and <00:16:55.725>that <00:16:55.865>is <00:16:56.005>the <00:16:56.145>name <00:16:56.285>of <00:16:56.425>the <00:16:56.565>file <00:16:56.705>that <00:16:56.845>we <00:16:56.985>want

393
00:16:57.305 --> 00:16:58.425
<00:16:57.305>to <00:16:57.641>download <00:16:57.977>and <00:16:58.313>unzip.

394
00:16:58.685 --> 00:17:01.145
<00:16:58.685>And <00:16:58.859>then <00:16:59.035>we <00:16:59.209>have <00:16:59.385>an <00:16:59.560>input <00:16:59.734>artifact <00:16:59.910>for <00:17:00.084>this.

395
00:17:01.165 --> 00:17:05.305
<00:17:01.165>We <00:17:01.339>specify <00:17:01.515>with <00:17:01.689>the <00:17:01.865>input <00:17:02.040>parameters, <00:17:02.214>um, <00:17:02.390>file <00:17:02.564>name

396
00:17:06.205 --> 00:17:08.185
<00:17:06.204>as <00:17:06.405>the <00:17:06.605>file <00:17:06.804>that <00:17:07.004>we <00:17:07.204>want <00:17:07.405>to <00:17:07.605>download.

397
00:17:08.685 --> 00:17:10.385
<00:17:08.685>And <00:17:09.034>then <00:17:09.385>we <00:17:09.734>have <00:17:10.085>output,

398
00:17:11.115 --> 00:17:14.815
<00:17:11.115>and <00:17:11.242>that <00:17:11.369>is <00:17:11.496>the, <00:17:11.624>yeah, <00:17:11.751>the <00:17:11.878>final, <00:17:12.005>uh, <00:17:12.133>output <00:17:12.260>of <00:17:12.387>our <00:17:12.515>workflow

399
00:17:14.815 --> 00:17:15.935
<00:17:14.815>that <00:17:15.067>we <00:17:15.319>upload <00:17:15.570>again <00:17:15.822>in,

400
00:17:16.115 --> 00:17:19.655
<00:17:16.115>in <00:17:16.315>some <00:17:16.515>workflow <00:17:16.714>name <00:17:16.915>minus <00:17:17.115>output <00:17:17.315>folder <00:17:17.515>in,

401
00:17:19.675 --> 00:17:20.775
<00:17:19.675>uh, <00:17:20.005>in <00:17:20.335>S <00:17:20.665>three.

402
00:17:21.395 --> 00:17:23.295
<00:17:21.395>And <00:17:21.628>we <00:17:21.861>have, <00:17:22.095>um, <00:17:22.328>quite <00:17:22.561>simple <00:17:22.795>script

403
00:17:23.295 --> 00:17:27.055
<00:17:23.295>and <00:17:23.450>that <00:17:23.606>is, <00:17:23.761>uh, <00:17:23.917>an <00:17:24.072>Ubuntu <00:17:24.228>container <00:17:24.383>with <00:17:24.539>zip <00:17:24.695>installed.

404
00:17:27.235 --> 00:17:29.415
<00:17:27.234>And <00:17:27.409>here <00:17:27.584>we <00:17:27.760>just <00:17:27.935>create <00:17:28.109>a <00:17:28.284>new <00:17:28.459>output <00:17:28.635>directory

405
00:17:29.415 --> 00:17:30.975
<00:17:29.415>and <00:17:29.764>unzip <00:17:30.115>the <00:17:30.465>input <00:17:30.815>artifact.

406
00:17:30.975 --> 00:17:34.335
<00:17:30.975>So <00:17:31.130>it's <00:17:31.286>really, <00:17:31.441>yeah, <00:17:31.597>pretty <00:17:31.752>simple <00:17:31.908>little <00:17:32.063>toy <00:17:32.219>example <00:17:32.375>here.

407
00:17:34.635 --> 00:17:38.335
<00:17:34.635>So <00:17:34.762>let's <00:17:34.889>take <00:17:35.016>a <00:17:35.144>look <00:17:35.271>Here, <00:17:35.398>we <00:17:35.525>can <00:17:35.653>see <00:17:35.780>our <00:17:35.907>input, <00:17:36.035>um,

408
00:17:38.665 --> 00:17:40.215
<00:17:38.665>input <00:17:39.013>artifacts, <00:17:39.362>the <00:17:39.711>input <00:17:40.060>file.

409
00:17:40.285 --> 00:17:42.335
<00:17:40.285>It's <00:17:40.460>a <00:17:40.635>zip <00:17:40.810>file <00:17:40.985>I <00:17:41.160>could <00:17:41.335>download <00:17:41.510>at <00:17:41.685>here

410
00:17:42.975 --> 00:17:44.975
<00:17:42.975>directly <00:17:43.208>from <00:17:43.441>the, <00:17:43.675>uh, <00:17:43.908>from <00:17:44.141>the <00:17:44.375>ui.

411
00:17:45.125 --> 00:17:46.695
<00:17:45.125>Then <00:17:45.405>the <00:17:45.685>container <00:17:45.965>does <00:17:46.245>its <00:17:46.525>thing.

412
00:17:47.195 --> 00:17:50.485
<00:17:47.195>Um, <00:17:47.428>yeah, <00:17:47.661>extracts <00:17:47.895>the <00:17:48.128>zip <00:17:48.361>as <00:17:48.595>planned,

413
00:17:50.905 --> 00:17:54.445
<00:17:50.905>and <00:17:51.032>then <00:17:51.159>we <00:17:51.286>can <00:17:51.414>take <00:17:51.541>a <00:17:51.668>look <00:17:51.795>at <00:17:51.923>the <00:17:52.050>output, <00:17:52.177>um, <00:17:52.305>artifacts.

414
00:17:54.825 --> 00:17:56.965
<00:17:54.825>And <00:17:55.025>here <00:17:55.225>you <00:17:55.425>can <00:17:55.625>see <00:17:55.825>Argo <00:17:56.025>can <00:17:56.225>display

415
00:17:56.965 --> 00:17:58.765
<00:17:56.965>artifacts <00:17:57.314>directly <00:17:57.665>in <00:17:58.014>the <00:17:58.365>browser.

416
00:17:58.795 --> 00:18:02.165
<00:17:58.795>That <00:17:58.935>is <00:17:59.075>quite <00:17:59.215>useful <00:17:59.355>if <00:17:59.495>you, <00:17:59.635>um, <00:17:59.775>work <00:17:59.915>with, <00:18:00.055>with <00:18:00.195>images

417
00:18:02.225 --> 00:18:05.205
<00:18:02.225>or <00:18:02.352>text <00:18:02.479>files <00:18:02.606>if <00:18:02.734>you <00:18:02.861>have <00:18:02.988>some <00:18:03.115>more <00:18:03.243>complex <00:18:03.370>stuff <00:18:03.497>like <00:18:03.625>three

418
00:18:05.285 --> 00:18:08.125
<00:18:05.285>D <00:18:05.485>data, <00:18:05.685>it's <00:18:05.885>a <00:18:06.085>little <00:18:06.285>bit <00:18:06.485>difficult, <00:18:06.685>um,

419
00:18:08.305 --> 00:18:10.325
<00:18:08.305>but <00:18:08.480>there <00:18:08.655>are <00:18:08.830>ways <00:18:09.005>to <00:18:09.180>get <00:18:09.355>it <00:18:09.530>to <00:18:09.705>work.

420
00:18:11.435 --> 00:18:15.685
<00:18:11.435>Okay? <00:18:11.668>And, <00:18:11.901>uh, <00:18:12.135>that <00:18:12.368>was <00:18:12.601>artifacts <00:18:12.835>here.

421
00:18:16.305 --> 00:18:20.895
<00:18:16.305>Um, <00:18:16.480>I <00:18:16.655>need <00:18:16.830>to <00:18:17.005>speed <00:18:17.180>up <00:18:17.355>a <00:18:17.530>little <00:18:17.705>bit

422
00:18:20.895 --> 00:18:22.975
<00:18:20.895>because <00:18:21.095>I <00:18:21.295>apparently <00:18:21.495>have <00:18:21.695>only <00:18:21.895>seven <00:18:22.095>minutes <00:18:22.295>left.

423
00:18:22.995 --> 00:18:25.015
<00:18:22.995>And, <00:18:23.228>uh, <00:18:23.461>we <00:18:23.695>will <00:18:23.928>see <00:18:24.161>about <00:18:24.395>that.

424
00:18:25.265 --> 00:18:27.415
<00:18:25.265>Maybe <00:18:25.405>we <00:18:25.545>need <00:18:25.685>to <00:18:25.825>cut <00:18:25.965>short <00:18:26.105>on <00:18:26.245>the <00:18:26.385>q <00:18:26.525>and <00:18:26.665>a

425
00:18:27.435 --> 00:18:31.215
<00:18:27.435>and <00:18:27.562>you <00:18:27.689>have <00:18:27.816>to <00:18:27.944>come <00:18:28.071>to <00:18:28.198>me <00:18:28.325>after, <00:18:28.453>uh, <00:18:28.580>after <00:18:28.707>the <00:18:28.835>talk.

426
00:18:31.395 --> 00:18:33.795
<00:18:31.395>So, <00:18:32.095>um, <00:18:32.795>okay.

427
00:18:33.975 --> 00:18:36.715
<00:18:33.975>Really <00:18:34.208>that <00:18:34.441>these <00:18:34.675>were <00:18:34.908>just <00:18:35.141>really <00:18:35.375>small

428
00:18:36.715 --> 00:18:38.195
<00:18:36.715>examples <00:18:37.048>for <00:18:37.380>data <00:18:37.714>pipelines, <00:18:38.047>right?

429
00:18:38.215 --> 00:18:41.755
<00:18:38.215>But, <00:18:38.415>um, <00:18:38.615>the <00:18:38.814>concepts <00:18:39.014>behind <00:18:39.215>them, <00:18:39.415>mainly <00:18:39.615>working

430
00:18:41.755 --> 00:18:43.675
<00:18:41.755>with <00:18:42.105>artifacts <00:18:42.455>using <00:18:42.805>various <00:18:43.155>containers.

431
00:18:43.765 --> 00:18:45.595
<00:18:43.765>These <00:18:44.045>are <00:18:44.325>the <00:18:44.605>important <00:18:44.885>concepts <00:18:45.165>in,

432
00:18:46.175 --> 00:18:48.235
<00:18:46.175>and <00:18:46.375>you <00:18:46.575>can <00:18:46.774>bind <00:18:46.975>them <00:18:47.175>as <00:18:47.375>you <00:18:47.575>like.

433
00:18:48.255 --> 00:18:50.475
<00:18:48.255>And <00:18:48.488>we <00:18:48.721>basically <00:18:48.955>build <00:18:49.188>our <00:18:49.421>data <00:18:49.655>pipelines

434
00:18:50.665 --> 00:18:51.915
<00:18:50.665>with <00:18:51.040>the <00:18:51.415>same <00:18:51.790>concept.

435
00:18:52.335 --> 00:18:54.315
<00:18:52.335>So <00:18:52.615>yeah, <00:18:52.895>it <00:18:53.175>scales <00:18:53.455>really <00:18:53.735>well.

436
00:18:56.035 --> 00:18:58.325
<00:18:56.035>Okay, <00:18:56.210>with <00:18:56.385>what <00:18:56.560>we <00:18:56.735>know <00:18:56.910>so <00:18:57.085>far <00:18:57.260>about <00:18:57.435>Argo,

437
00:18:58.345 --> 00:19:01.365
<00:18:58.345>we <00:18:58.520>can <00:18:58.695>finally <00:18:58.870>start <00:18:59.045>training <00:18:59.220>a <00:18:59.395>machine <00:18:59.570>learning <00:18:59.745>model

438
00:19:01.365 --> 00:19:03.885
<00:19:01.365>for <00:19:01.505>this, <00:19:01.645>we <00:19:01.785>need <00:19:01.925>our <00:19:02.065>training <00:19:02.205>data <00:19:02.345>as <00:19:02.485>an <00:19:02.625>input <00:19:02.765>artifact.

439
00:19:04.105 --> 00:19:06.005
<00:19:04.105>So <00:19:04.338>we <00:19:04.571>can <00:19:04.805>load <00:19:05.038>our <00:19:05.271>training <00:19:05.505>script

440
00:19:06.225 --> 00:19:08.645
<00:19:06.225>as <00:19:06.399>an <00:19:06.574>input <00:19:06.750>artifact <00:19:06.925>from <00:19:07.100>a <00:19:07.274>GI <00:19:07.449>repository, <00:19:07.625>right?

441
00:19:08.865 --> 00:19:11.005
<00:19:08.865>And <00:19:09.005>then <00:19:09.145>we <00:19:09.285>take <00:19:09.425>a <00:19:09.565>custom <00:19:09.705>container <00:19:09.845>in <00:19:09.985>which <00:19:10.125>we <00:19:10.265>have

442
00:19:11.005 --> 00:19:12.525
<00:19:11.005>installed <00:19:11.461>Python <00:19:11.917>and <00:19:12.373>PyTorch,

443
00:19:12.525 --> 00:19:14.605
<00:19:12.525>which <00:19:12.991>is <00:19:13.458>reasonably <00:19:13.925>straightforward.

444
00:19:15.035 --> 00:19:18.365
<00:19:15.035>Then <00:19:15.162>we, <00:19:15.289>uh, <00:19:15.416>cd <00:19:15.544>in <00:19:15.671>our <00:19:15.798>script <00:19:15.925>directory <00:19:16.053>and <00:19:16.180>off <00:19:16.307>we <00:19:16.435>go.

445
00:19:18.465 --> 00:19:20.405
<00:19:18.465>So <00:19:18.814>that <00:19:19.165>seems <00:19:19.514>very <00:19:19.865>simple,

446
00:19:20.865 --> 00:19:23.965
<00:19:20.865>but <00:19:21.020>in <00:19:21.176>reality, <00:19:21.331>training <00:19:21.487>workflows <00:19:21.642>are <00:19:21.798>a <00:19:21.953>little <00:19:22.109>bit <00:19:22.265>more

447
00:19:23.965 --> 00:19:25.485
<00:19:23.965>complex <00:19:24.238>than <00:19:24.512>just <00:19:24.785>one <00:19:25.059>step, <00:19:25.332>right?

448
00:19:26.065 --> 00:19:27.845
<00:19:26.065>So <00:19:26.265>let's <00:19:26.465>take <00:19:26.665>a <00:19:26.865>look <00:19:27.065>at <00:19:27.265>a <00:19:27.465>more

449
00:19:27.845 --> 00:19:29.325
<00:19:27.845>complicated <00:19:28.511>training <00:19:29.177>workflow.

450
00:19:29.495 --> 00:19:31.685
<00:19:29.495>First, <00:19:29.669>of <00:19:29.844>course, <00:19:30.020>we <00:19:30.195>need <00:19:30.370>to <00:19:30.544>download <00:19:30.719>some <00:19:30.895>data,

451
00:19:32.155 --> 00:19:34.805
<00:19:32.155>then <00:19:32.282>we <00:19:32.409>might <00:19:32.536>to <00:19:32.664>clean <00:19:32.791>the <00:19:32.918>data <00:19:33.045>and <00:19:33.173>split <00:19:33.300>it <00:19:33.427>into <00:19:33.555>training

452
00:19:34.805 --> 00:19:36.965
<00:19:34.805>and <00:19:35.038>validation <00:19:35.271>data <00:19:35.505>to <00:19:35.738>train <00:19:35.971>the <00:19:36.205>model.

453
00:19:37.145 --> 00:19:38.765
<00:19:37.145>We <00:19:37.495>additionally <00:19:37.845>lead <00:19:38.195>some <00:19:38.545>parameters

454
00:19:38.765 --> 00:19:40.525
<00:19:38.765>that <00:19:38.965>we <00:19:39.165>might <00:19:39.365>define <00:19:39.565>in <00:19:39.765>a <00:19:39.965>central <00:19:40.165>location

455
00:19:40.525 --> 00:19:41.805
<00:19:40.525>like <00:19:40.813>ML <00:19:41.101>flow, <00:19:41.389>for <00:19:41.677>example.

456
00:19:42.265 --> 00:19:43.285
<00:19:42.265>And <00:19:42.494>with <00:19:42.724>the <00:19:42.953>training <00:19:43.183>data

457
00:19:43.305 --> 00:19:45.445
<00:19:43.305>and <00:19:43.480>the <00:19:43.655>parameters, <00:19:43.830>we <00:19:44.005>can <00:19:44.180>finally <00:19:44.355>train <00:19:44.530>the <00:19:44.705>model,

458
00:19:45.785 --> 00:19:48.325
<00:19:45.785>but <00:19:45.940>we <00:19:46.096>will <00:19:46.251>of <00:19:46.407>course <00:19:46.562>train <00:19:46.718>for <00:19:46.873>multiple <00:19:47.029>epochs, <00:19:47.185>right?

459
00:19:48.865 --> 00:19:52.205
<00:19:48.865>Um, <00:19:49.040>after <00:19:49.215>the <00:19:49.390>training, <00:19:49.565>we <00:19:49.740>take <00:19:49.915>the <00:19:50.090>finished <00:19:50.265>model

460
00:19:52.225 --> 00:19:53.845
<00:19:52.225>and <00:19:52.458>test <00:19:52.691>it <00:19:52.925>with <00:19:53.158>the <00:19:53.391>validation <00:19:53.625>data.

461
00:19:54.185 --> 00:19:57.925
<00:19:54.185>And <00:19:54.325>finally <00:19:54.465>we <00:19:54.605>can <00:19:54.745>upload <00:19:54.885>the <00:19:55.024>model <00:19:55.165>to <00:19:55.304>some <00:19:55.445>model <00:19:55.585>registry.

462
00:19:57.925 --> 00:20:01.485
<00:19:57.925>So <00:19:58.080>it's <00:19:58.236>a <00:19:58.391>rather <00:19:58.547>involved <00:19:58.702>workflow <00:19:58.858>that <00:19:59.013>we <00:19:59.169>have <00:19:59.325>here

463
00:20:01.635 --> 00:20:03.125
<00:20:01.635>with <00:20:02.305>multi <00:20:02.976>dependencies.

464
00:20:03.235 --> 00:20:05.325
<00:20:03.235>Each <00:20:03.435>step <00:20:03.635>is <00:20:03.834>waiting <00:20:04.034>for, <00:20:04.235>for <00:20:04.435>something <00:20:04.635>else.

465
00:20:05.785 --> 00:20:08.245
<00:20:05.785>Um, <00:20:05.960>it's <00:20:06.135>not <00:20:06.310>just <00:20:06.485>one <00:20:06.660>step <00:20:06.835>after <00:20:07.010>the <00:20:07.185>other.

466
00:20:08.275 --> 00:20:10.605
<00:20:08.275>It's <00:20:08.450>more <00:20:08.625>like <00:20:08.800>a, <00:20:08.975>like <00:20:09.150>a <00:20:09.325>real <00:20:09.500>graph, <00:20:09.675>right?

467
00:20:11.505 --> 00:20:15.485
<00:20:11.505>And <00:20:11.612>now <00:20:11.720>I <00:20:11.828>want <00:20:11.935>to <00:20:12.043>show <00:20:12.151>you <00:20:12.258>how <00:20:12.366>we <00:20:12.474>can <00:20:12.581>build <00:20:12.689>that <00:20:12.797>in <00:20:12.905>Argo

468
00:20:15.485 --> 00:20:17.725
<00:20:15.485>with <00:20:15.718>a <00:20:15.951>direct <00:20:16.185>specific <00:20:16.418>graph, <00:20:16.651>uh, <00:20:16.885>deck.

469
00:20:18.905 --> 00:20:21.205
<00:20:18.905>So <00:20:19.605>let's <00:20:20.305>see.

470
00:20:24.945 --> 00:20:27.725
<00:20:24.945>Uh, <00:20:25.645>yes, <00:20:26.345>okay.

471
00:20:28.245 --> 00:20:32.105
<00:20:28.245>I <00:20:28.419>will <00:20:28.594>again, <00:20:28.770>first <00:20:28.945>start <00:20:29.120>the, <00:20:29.294>start <00:20:29.469>the <00:20:29.645>workflow

472
00:20:32.105 --> 00:20:34.385
<00:20:32.105>because <00:20:32.385>it <00:20:32.665>runs <00:20:32.945>for <00:20:33.225>some <00:20:33.505>time.

473
00:20:34.925 --> 00:20:38.865
<00:20:34.925>And <00:20:35.052>then <00:20:35.179>I <00:20:35.306>will <00:20:35.434>show <00:20:35.561>you <00:20:35.688>how <00:20:35.815>I <00:20:35.943>build <00:20:36.070>out <00:20:36.197>the <00:20:36.325>template.

474
00:20:39.005 --> 00:20:41.985
<00:20:39.005>So <00:20:39.205>again, <00:20:39.405>I <00:20:39.605>hide <00:20:39.805>the <00:20:40.005>ugly <00:20:40.205>metadata, <00:20:40.405>okay?

475
00:20:43.135 --> 00:20:45.225
<00:20:43.135>Here <00:20:43.415>I <00:20:43.695>have <00:20:43.975>my <00:20:44.254>workflow <00:20:44.535>template

476
00:20:45.225 --> 00:20:48.675
<00:20:45.225>and <00:20:45.380>I <00:20:45.536>have <00:20:45.691>a <00:20:45.847>directed <00:20:46.002>is <00:20:46.158>a <00:20:46.313>graph <00:20:46.469>template <00:20:46.625>here.

477
00:20:49.175 --> 00:20:51.795
<00:20:49.175>And <00:20:49.350>in <00:20:49.524>this <00:20:49.700>graph <00:20:49.875>template <00:20:50.050>I <00:20:50.225>define <00:20:50.399>some <00:20:50.575>tasks.

478
00:20:51.855 --> 00:20:53.355
<00:20:51.855>And <00:20:52.047>these <00:20:52.240>are <00:20:52.433>really <00:20:52.626>the <00:20:52.819>tasks <00:20:53.012>that <00:20:53.205>I,

479
00:20:53.375 --> 00:20:54.475
<00:20:53.375>uh, <00:20:53.622>just <00:20:53.870>outlined <00:20:54.117>for <00:20:54.365>you.

480
00:20:54.495 --> 00:20:56.875
<00:20:54.495>We <00:20:54.695>have <00:20:54.895>a <00:20:55.094>download <00:20:55.294>and <00:20:55.495>split <00:20:55.695>data <00:20:55.895>task.

481
00:20:57.375 --> 00:21:00.275
<00:20:57.375>Um, <00:20:57.575>and <00:20:57.775>here <00:20:57.975>I <00:20:58.175>define <00:20:58.375>a <00:20:58.575>template <00:20:58.775>reference.

482
00:21:00.275 --> 00:21:05.155
<00:21:00.275>So <00:21:00.415>I <00:21:00.555>can <00:21:00.695>define <00:21:00.835>my <00:21:00.975>workflow <00:21:01.115>templates <00:21:01.255>in <00:21:01.395>different <00:21:01.535>files <00:21:01.675>so

483
00:21:05.385 --> 00:21:08.155
<00:21:05.385>that <00:21:05.560>I <00:21:05.735>keep <00:21:05.910>my <00:21:06.085>files <00:21:06.260>short <00:21:06.435>and <00:21:06.610>rather <00:21:06.785>simple,

484
00:21:08.375 --> 00:21:12.155
<00:21:08.375>and <00:21:08.502>then <00:21:08.629>combine <00:21:08.756>all <00:21:08.884>of <00:21:09.011>these <00:21:09.138>template <00:21:09.265>files <00:21:09.393>in <00:21:09.520>one <00:21:09.647>big, <00:21:09.775>uh,

485
00:21:12.215 --> 00:21:16.835
<00:21:12.215>master <00:21:12.355>template <00:21:12.495>file, <00:21:12.635>so <00:21:12.774>to <00:21:12.915>say, <00:21:13.054>um, <00:21:13.195>or <00:21:13.334>main <00:21:13.475>template <00:21:13.615>file.

486
00:21:17.215 --> 00:21:21.275
<00:21:17.215>So, <00:21:17.355>um, <00:21:17.495>then <00:21:17.635>yeah, <00:21:17.774>we <00:21:17.915>do <00:21:18.054>the <00:21:18.195>get <00:21:18.334>parameter <00:21:18.475>set <00:21:18.615>so

487
00:21:21.275 --> 00:21:22.435
<00:21:21.275>that <00:21:21.536>it's <00:21:21.797>also <00:21:22.058>quite <00:21:22.319>straightforward.

488
00:21:22.455 --> 00:21:27.395
<00:21:22.455>And <00:21:22.582>then <00:21:22.709>we <00:21:22.836>have <00:21:22.964>the, <00:21:23.091>um, <00:21:23.218>the <00:21:23.345>clean <00:21:23.473>training <00:21:23.600>data, <00:21:23.727>uh, <00:21:23.855>step

489
00:21:27.505 --> 00:21:30.155
<00:21:27.505>that <00:21:27.738>depends <00:21:27.971>on <00:21:28.205>the <00:21:28.438>downloading <00:21:28.671>of <00:21:28.905>data,

490
00:21:30.155 --> 00:21:31.715
<00:21:30.155>of <00:21:30.355>course <00:21:30.555>on <00:21:30.754>the <00:21:30.955>download <00:21:31.155>and <00:21:31.355>split <00:21:31.555>data.

491
00:21:31.775 --> 00:21:33.915
<00:21:31.775>And, <00:21:32.008>uh, <00:21:32.241>we <00:21:32.475>can <00:21:32.708>define <00:21:32.941>this, <00:21:33.175>um,

492
00:21:34.585 --> 00:21:36.715
<00:21:34.585>this <00:21:35.051>prerequisites <00:21:35.518>with <00:21:35.985>depends.

493
00:21:36.855 --> 00:21:40.395
<00:21:36.855>And <00:21:36.995>um, <00:21:37.135>also <00:21:37.275>more <00:21:37.415>complex <00:21:37.555>ones <00:21:37.695>are <00:21:37.835>of <00:21:37.975>course <00:21:38.115>possible, <00:21:38.255>like

494
00:21:40.455 --> 00:21:44.435
<00:21:40.455>for <00:21:40.610>the <00:21:40.766>setup <00:21:40.921>training <00:21:41.077>here, <00:21:41.232>we <00:21:41.388>need <00:21:41.543>the <00:21:41.699>two <00:21:41.855>dependencies,

495
00:21:44.445 --> 00:21:47.195
<00:21:44.445>clean <00:21:44.620>training <00:21:44.794>data <00:21:44.970>and <00:21:45.145>of <00:21:45.320>course <00:21:45.495>get <00:21:45.669>parameter <00:21:45.845>set

496
00:21:47.195 --> 00:21:49.755
<00:21:47.195>because <00:21:47.370>we <00:21:47.544>need <00:21:47.720>both <00:21:47.895>to <00:21:48.070>start <00:21:48.245>actually <00:21:48.419>the <00:21:48.595>training.

497
00:21:50.185 --> 00:21:53.795
<00:21:50.185>Yeah, <00:21:50.325>and <00:21:50.465>this <00:21:50.605>is <00:21:50.745>how <00:21:50.885>you <00:21:51.024>can <00:21:51.165>define <00:21:51.304>quite <00:21:51.445>complex <00:21:51.585>direct,

498
00:21:54.295 --> 00:21:56.795
<00:21:54.295>direct, <00:21:54.528>uh, <00:21:54.761>cyclical <00:21:54.995>graphs <00:21:55.228>in, <00:21:55.461>in <00:21:55.695>igo.

499
00:21:56.795 --> 00:21:59.395
<00:21:56.795>You <00:21:57.028>can <00:21:57.261>also <00:21:57.495>make <00:21:57.728>steps <00:21:57.961>optional, <00:21:58.195>um,

500
00:21:59.575 --> 00:22:03.795
<00:21:59.575>and <00:21:59.808>also <00:22:00.041>can <00:22:00.275>run <00:22:00.508>whole, <00:22:00.741>um, <00:22:00.975>parts

501
00:22:03.895 --> 00:22:06.995
<00:22:03.895>of <00:22:04.035>the <00:22:04.175>graph <00:22:04.315>only <00:22:04.455>when <00:22:04.595>another <00:22:04.735>part <00:22:04.875>fails <00:22:05.014>and <00:22:05.155>so <00:22:05.295>on.

502
00:22:06.995 --> 00:22:08.715
<00:22:06.995>So <00:22:07.274>yeah, <00:22:07.554>it, <00:22:07.834>it's <00:22:08.114>really <00:22:08.395>nice.

503
00:22:09.495 --> 00:22:12.955
<00:22:09.495>So <00:22:09.622>let's <00:22:09.749>see <00:22:09.876>how <00:22:10.004>far <00:22:10.131>the <00:22:10.258>training <00:22:10.385>workflow <00:22:10.513>had <00:22:10.640>got <00:22:10.767>so <00:22:10.895>far.

504
00:22:12.955 --> 00:22:15.395
<00:22:12.955>Okay, <00:22:13.155>the <00:22:13.355>download <00:22:13.554>and <00:22:13.754>split <00:22:13.955>data <00:22:14.155>worked <00:22:14.355>fine.

505
00:22:15.855 --> 00:22:17.395
<00:22:15.855>Uh, <00:22:16.317>clean <00:22:16.779>training <00:22:17.241>data

506
00:22:17.395 --> 00:22:19.235
<00:22:17.395>and <00:22:17.628>clean <00:22:17.861>validation <00:22:18.095>data <00:22:18.328>also <00:22:18.561>worked <00:22:18.795>fine.

507
00:22:19.235 --> 00:22:20.315
<00:22:19.235>We <00:22:19.477>get <00:22:19.721>the <00:22:19.964>parameter <00:22:20.207>set

508
00:22:20.315 --> 00:22:21.915
<00:22:20.315>and <00:22:20.515>now <00:22:20.715>we <00:22:20.915>are <00:22:21.115>currently <00:22:21.315>in <00:22:21.515>the <00:22:21.715>training.

509
00:22:22.535 --> 00:22:25.795
<00:22:22.535>Um, <00:22:22.675>as <00:22:22.815>I <00:22:22.955>said, <00:22:23.095>we <00:22:23.235>want <00:22:23.375>to <00:22:23.515>run <00:22:23.655>for <00:22:23.795>multiple <00:22:23.935>epochs

510
00:22:26.055 --> 00:22:28.915
<00:22:26.055>and <00:22:26.210>this <00:22:26.366>epochs <00:22:26.521>one, <00:22:26.677>of <00:22:26.832>course <00:22:26.988>one <00:22:27.143>after <00:22:27.299>each <00:22:27.455>other.

511
00:22:29.215 --> 00:22:32.195
<00:22:29.215>So <00:22:29.370>it's <00:22:29.526>really <00:22:29.681>a <00:22:29.837>step <00:22:29.992>template <00:22:30.148>that <00:22:30.303>is <00:22:30.459>running <00:22:30.615>inside

512
00:22:32.215 --> 00:22:33.675
<00:22:32.215>of <00:22:32.543>the <00:22:32.871>director <00:22:33.200>cyclical <00:22:33.529>graph.

513
00:22:34.095 --> 00:22:37.915
<00:22:34.095>And <00:22:34.235>after, <00:22:34.375>well, <00:22:34.515>we <00:22:34.655>train <00:22:34.795>for <00:22:34.935>three <00:22:35.075>epochs, <00:22:35.215>that's <00:22:35.355>not <00:22:35.495>much,

514
00:22:38.015 --> 00:22:40.435
<00:22:38.015>but <00:22:38.295>because <00:22:38.575>time, <00:22:38.855>you <00:22:39.135>know, <00:22:39.415>um,

515
00:22:41.335 --> 00:22:42.715
<00:22:41.335>and <00:22:41.542>when <00:22:41.749>we <00:22:41.956>are <00:22:42.163>done <00:22:42.370>with <00:22:42.577>that,

516
00:22:42.935 --> 00:22:45.355
<00:22:42.935>we <00:22:43.135>can <00:22:43.335>take <00:22:43.534>finally <00:22:43.735>the <00:22:43.935>clean <00:22:44.135>validation <00:22:44.335>data

517
00:22:45.775 --> 00:22:47.955
<00:22:45.775>and <00:22:46.008>run <00:22:46.241>the <00:22:46.475>test <00:22:46.708>model <00:22:46.941>step <00:22:47.175>here.

518
00:22:48.575 --> 00:22:53.355
<00:22:48.575>And <00:22:48.702>this <00:22:48.829>is <00:22:48.956>really <00:22:49.084>a <00:22:49.211>way <00:22:49.338>how <00:22:49.465>you <00:22:49.593>can <00:22:49.720>build <00:22:49.847>arbitrary <00:22:49.975>complex

519
00:22:53.875 --> 00:22:55.115
<00:22:53.875>graphs <00:22:54.433>in <00:22:54.991>Argo.

520
00:22:55.455 --> 00:22:58.835
<00:22:55.455>Um, <00:22:55.610>but <00:22:55.766>a <00:22:55.921>word <00:22:56.077>of <00:22:56.232>warning, <00:22:56.388>maybe <00:22:56.543>don't <00:22:56.699>overdo <00:22:56.855>it

521
00:22:58.835 --> 00:23:02.515
<00:22:58.835>because <00:22:58.975>if <00:22:59.115>you <00:22:59.255>can't <00:22:59.395>keep <00:22:59.535>this <00:22:59.675>graph <00:22:59.815>in <00:22:59.955>your <00:23:00.095>head, <00:23:00.235>then

522
00:23:03.065 --> 00:23:05.035
<00:23:03.065>yeah, <00:23:03.298>it <00:23:03.531>gets <00:23:03.765>a <00:23:03.998>little <00:23:04.231>bit <00:23:04.465>hard.

523
00:23:05.095 --> 00:23:07.915
<00:23:05.095>So <00:23:05.375>maybe <00:23:05.655>do <00:23:05.935>some <00:23:06.215>smaller <00:23:06.495>ducks

524
00:23:07.915 --> 00:23:10.955
<00:23:07.915>and <00:23:08.070>build <00:23:08.226>more <00:23:08.381>of <00:23:08.537>them <00:23:08.692>than <00:23:08.848>just <00:23:09.003>one <00:23:09.159>big <00:23:09.315>thing

525
00:23:10.955 --> 00:23:11.955
<00:23:10.955>that <00:23:11.179>runs <00:23:11.405>the <00:23:11.629>whole <00:23:11.855>company.

526
00:23:13.265 --> 00:23:14.515
<00:23:13.265>Alright? <00:23:14.390>Um,

527
00:23:15.465 --> 00:23:18.765
<00:23:15.465>that <00:23:15.698>were <00:23:15.931>directed <00:23:16.165>as <00:23:16.398>the <00:23:16.631>click <00:23:16.865>graphs.

528
00:23:19.545 --> 00:23:21.795
<00:23:19.545>And <00:23:20.245>now, <00:23:20.945>um,

529
00:23:23.325 --> 00:23:25.375
<00:23:23.325>when <00:23:23.605>we've <00:23:23.885>trained <00:23:24.165>the <00:23:24.445>ML <00:23:24.725>model,

530
00:23:25.835 --> 00:23:27.015
<00:23:25.835>we <00:23:26.047>want <00:23:26.259>to <00:23:26.472>deploy <00:23:26.684>it, <00:23:26.897>right?

531
00:23:27.075 --> 00:23:30.495
<00:23:27.075>So <00:23:27.275>model <00:23:27.475>serving <00:23:27.675>the, <00:23:27.875>in <00:23:28.075>quotes, <00:23:28.275>normal <00:23:28.475>approaches

532
00:23:30.495 --> 00:23:32.495
<00:23:30.495>to <00:23:30.695>package <00:23:30.895>our <00:23:31.094>model <00:23:31.294>into <00:23:31.495>a <00:23:31.695>model <00:23:31.895>server,

533
00:23:32.645 --> 00:23:35.895
<00:23:32.645>somehow <00:23:32.800>attach <00:23:32.956>the <00:23:33.111>rest <00:23:33.267>API <00:23:33.422>package <00:23:33.578>all <00:23:33.733>in <00:23:33.889>the <00:23:34.045>container

534
00:23:35.895 --> 00:23:37.015
<00:23:35.895>and <00:23:36.063>push <00:23:36.231>it <00:23:36.399>to <00:23:36.567>the <00:23:36.735>cluster, <00:23:36.903>right?

535
00:23:37.245 --> 00:23:39.775
<00:23:37.245>Then <00:23:37.478>our <00:23:37.711>client <00:23:37.945>application <00:23:38.178>and <00:23:38.411>send <00:23:38.645>requests.

536
00:23:39.775 --> 00:23:42.455
<00:23:39.775>And <00:23:39.950>our <00:23:40.125>model <00:23:40.300>generates <00:23:40.475>the <00:23:40.650>responses <00:23:40.825>on <00:23:41.000>the <00:23:41.175>fly.

537
00:23:42.455 --> 00:23:44.855
<00:23:42.455>So <00:23:42.688>this <00:23:42.921>is <00:23:43.155>really <00:23:43.388>classic <00:23:43.621>online <00:23:43.855>inference.

538
00:23:44.875 --> 00:23:46.605
<00:23:44.875>We <00:23:45.225>can <00:23:45.575>use <00:23:45.925>online <00:23:46.275>inference

539
00:23:46.885 --> 00:23:48.645
<00:23:46.885>whenever <00:23:47.235>we <00:23:47.585>need <00:23:47.935>quick <00:23:48.285>predictions

540
00:23:48.865 --> 00:23:51.405
<00:23:48.865>and <00:23:49.065>when <00:23:49.265>we <00:23:49.465>can <00:23:49.665>deliver <00:23:49.865>answers <00:23:50.065>really <00:23:50.265>quickly.

541
00:23:52.545 --> 00:23:54.325
<00:23:52.545>It <00:23:52.778>is <00:23:53.011>different <00:23:53.245>with <00:23:53.478>batch <00:23:53.711>inference <00:23:53.945>here.

542
00:23:54.325 --> 00:23:56.045
<00:23:54.325>We <00:23:54.525>first <00:23:54.725>collect <00:23:54.925>a <00:23:55.125>pile <00:23:55.325>of <00:23:55.525>input <00:23:55.725>data

543
00:23:56.105 --> 00:23:57.845
<00:23:56.105>and <00:23:56.385>then <00:23:56.665>we <00:23:56.945>push <00:23:57.225>them <00:23:57.505>collectively

544
00:23:57.845 --> 00:23:59.205
<00:23:57.845>through <00:23:58.253>the <00:23:58.661>inference <00:23:59.069>pipelines.

545
00:23:59.305 --> 00:24:02.085
<00:23:59.305>We <00:23:59.460>can <00:23:59.616>do <00:23:59.771>this, <00:23:59.927>um, <00:24:00.082>whenever <00:24:00.238>we <00:24:00.393>don't <00:24:00.549>necessarily <00:24:00.705>need

546
00:24:02.105 --> 00:24:03.285
<00:24:02.105>an <00:24:02.636>answer <00:24:03.167>immediately.

547
00:24:04.155 --> 00:24:07.565
<00:24:04.155>Also, <00:24:04.295>if <00:24:04.435>the <00:24:04.575>creation <00:24:04.715>of <00:24:04.855>the <00:24:04.995>predictions <00:24:05.135>takes <00:24:05.274>a <00:24:05.415>long <00:24:05.555>time.

548
00:24:08.345 --> 00:24:10.525
<00:24:08.345>And <00:24:08.578>what <00:24:08.811>is <00:24:09.045>very <00:24:09.278>important <00:24:09.511>here <00:24:09.745>is

549
00:24:10.525 --> 00:24:13.125
<00:24:10.525>that <00:24:10.700>our <00:24:10.875>inference <00:24:11.050>pipeline <00:24:11.225>then <00:24:11.400>is <00:24:11.575>really, <00:24:11.750>really <00:24:11.925>stable

550
00:24:13.315 --> 00:24:15.525
<00:24:13.315>because <00:24:13.595>if <00:24:13.875>we <00:24:14.155>do <00:24:14.435>online <00:24:14.715>inference,

551
00:24:15.785 --> 00:24:17.925
<00:24:15.785>the <00:24:16.065>downstream <00:24:16.345>application <00:24:16.625>notices <00:24:16.905>an <00:24:17.185>error

552
00:24:17.925 --> 00:24:20.845
<00:24:17.925>and <00:24:18.065>then <00:24:18.205>can <00:24:18.345>res <00:24:18.485>sense <00:24:18.625>the, <00:24:18.764>uh, <00:24:18.905>request <00:24:19.044>right <00:24:19.185>away, <00:24:19.325>right?

553
00:24:21.185 --> 00:24:23.765
<00:24:21.185>But <00:24:21.418>if <00:24:21.651>our <00:24:21.885>influence <00:24:22.118>pipeline <00:24:22.351>runs <00:24:22.585>overnight,

554
00:24:23.865 --> 00:24:26.525
<00:24:23.865>it <00:24:23.981>would <00:24:24.098>be <00:24:24.215>really <00:24:24.331>sad <00:24:24.448>if <00:24:24.565>it <00:24:24.681>failed <00:24:24.798>at <00:24:24.915>two <00:24:25.031>30 <00:24:25.148>in <00:24:25.265>the

555
00:24:26.525 --> 00:24:27.965
<00:24:26.525>morning, <00:24:26.957>um, <00:24:27.389>because <00:24:27.821>one,

556
00:24:28.065 --> 00:24:29.605
<00:24:28.065>one <00:24:28.411>Kubernetes <00:24:28.758>node <00:24:29.104>crashed, <00:24:29.451>right?

557
00:24:29.605 --> 00:24:31.645
<00:24:29.605>And <00:24:29.732>I <00:24:29.859>only <00:24:29.986>see <00:24:30.114>that <00:24:30.241>when <00:24:30.368>I <00:24:30.495>wake <00:24:30.623>up <00:24:30.750>in <00:24:30.877>the <00:24:31.005>morning.

558
00:24:31.645 --> 00:24:34.965
<00:24:31.645>That <00:24:31.761>would <00:24:31.878>be <00:24:31.995>really <00:24:32.111>bad. <00:24:32.228>So <00:24:32.345>what <00:24:32.461>can <00:24:32.578>Argo <00:24:32.695>do <00:24:32.811>for <00:24:32.928>us <00:24:33.045>there?

559
00:24:36.635 --> 00:24:39.925
<00:24:36.635>Argo <00:24:36.835>provides <00:24:37.035>us, <00:24:37.235>well <00:24:37.435>robust <00:24:37.635>tools <00:24:37.835>for <00:24:38.035>retries.

560
00:24:39.945 --> 00:24:42.765
<00:24:39.945>In <00:24:40.100>the <00:24:40.256>simplest <00:24:40.411>case, <00:24:40.567>we <00:24:40.722>specify <00:24:40.878>an <00:24:41.033>empty <00:24:41.189>retry <00:24:41.345>strategy.

561
00:24:42.865 --> 00:24:45.405
<00:24:42.865>If <00:24:42.992>we <00:24:43.119>do <00:24:43.246>that, <00:24:43.374>then <00:24:43.501>the <00:24:43.628>workflow <00:24:43.755>is <00:24:43.883>retried <00:24:44.010>over <00:24:44.137>and <00:24:44.265>over

562
00:24:45.405 --> 00:24:47.765
<00:24:45.405>and <00:24:45.560>over <00:24:45.716>again <00:24:45.871>until <00:24:46.027>the <00:24:46.182>end <00:24:46.338>of <00:24:46.493>the <00:24:46.649>universe <00:24:46.805>basically,

563
00:24:47.765 --> 00:24:49.605
<00:24:47.765>or, <00:24:47.998>uh, <00:24:48.231>until <00:24:48.465>we <00:24:48.698>delete <00:24:48.931>our <00:24:49.165>cluster.

564
00:24:50.855 --> 00:24:52.245
<00:24:50.855>Maybe <00:24:51.063>we <00:24:51.272>don't <00:24:51.480>want <00:24:51.688>to <00:24:51.897>do <00:24:52.106>that.

565
00:24:52.245 --> 00:24:55.845
<00:24:52.245>Maybe <00:24:52.385>we <00:24:52.524>just <00:24:52.665>want <00:24:52.804>to <00:24:52.945>repeat <00:24:53.084>for <00:24:53.225>a <00:24:53.364>certain <00:24:53.504>amount, <00:24:53.645>like,

566
00:24:55.845 --> 00:24:59.685
<00:24:55.845>like <00:24:56.020>10 <00:24:56.195>retries, <00:24:56.370>then <00:24:56.545>well <00:24:56.720>we <00:24:56.895>can <00:24:57.070>specify <00:24:57.245>that

567
00:25:00.185 --> 00:25:03.445
<00:25:00.185>and <00:25:00.340>um, <00:25:00.496>of <00:25:00.651>course <00:25:00.807>we <00:25:00.962>can <00:25:01.118>specify <00:25:01.273>if <00:25:01.429>we <00:25:01.585>want

568
00:25:03.555 --> 00:25:04.725
<00:25:03.555>some <00:25:03.906>back <00:25:04.257>of <00:25:04.608>strategy.

569
00:25:04.825 --> 00:25:08.005
<00:25:04.825>So <00:25:05.000>if <00:25:05.175>we <00:25:05.350>want <00:25:05.525>to <00:25:05.700>wait <00:25:05.875>between <00:25:06.050>retry, <00:25:06.225>so

570
00:25:08.095 --> 00:25:10.045
<00:25:08.095>after <00:25:08.295>the <00:25:08.495>first <00:25:08.695>failure, <00:25:08.895>we <00:25:09.095>wait <00:25:09.295>10 <00:25:09.495>seconds

571
00:25:10.055 --> 00:25:12.965
<00:25:10.055>after <00:25:10.195>the <00:25:10.335>second <00:25:10.475>one <00:25:10.615>we <00:25:10.755>wait <00:25:10.895>20 <00:25:11.035>seconds <00:25:11.175>and <00:25:11.315>so <00:25:11.455>on.

572
00:25:13.265 --> 00:25:14.285
<00:25:13.265>And <00:25:13.724>this <00:25:14.183>continues

573
00:25:14.285 --> 00:25:16.125
<00:25:14.285>until <00:25:14.485>the <00:25:14.685>maximum <00:25:14.885>back <00:25:15.085>of <00:25:15.285>duration <00:25:15.485>is <00:25:15.685>reached.

574
00:25:16.545 --> 00:25:18.805
<00:25:16.545>All <00:25:16.825>our <00:25:17.105>retrial <00:25:17.385>limits <00:25:17.665>are <00:25:17.945>exhausted.

575
00:25:19.625 --> 00:25:22.365
<00:25:19.625>And <00:25:19.800>I <00:25:19.975>have <00:25:20.150>one <00:25:20.325>last <00:25:20.500>small <00:25:20.675>demo <00:25:20.850>for <00:25:21.025>this

576
00:25:22.365 --> 00:25:25.925
<00:25:22.365>and <00:25:22.540>then <00:25:22.715>I <00:25:22.890>hopefully <00:25:23.065>will <00:25:23.240>catch <00:25:23.415>up <00:25:23.590>in <00:25:23.765>time.

577
00:25:26.645 --> 00:25:29.765
<00:25:26.645>Hmm. <00:25:26.845>And <00:25:27.045>until <00:25:27.245>I'm <00:25:27.445>direct <00:25:27.645>from <00:25:27.845>the <00:25:28.045>stage,

578
00:25:30.095 --> 00:25:32.945
<00:25:30.095>maybe <00:25:30.375>hmm, <00:25:30.655>you <00:25:30.935>have <00:25:31.215>time, <00:25:31.495>right?

579
00:25:32.945 --> 00:25:34.065
<00:25:32.945>You <00:25:33.146>have <00:25:33.348>nothing <00:25:33.549>planned <00:25:33.751>for <00:25:33.953>today.

580
00:25:36.095 --> 00:25:40.585
<00:25:36.095>Alright, <00:25:36.295>um, <00:25:36.495>then <00:25:36.695>let's <00:25:36.895>run <00:25:37.095>the <00:25:37.295>retry <00:25:37.495>workflow.

581
00:25:41.395 --> 00:25:43.805
<00:25:41.395>It's <00:25:41.570>always <00:25:41.745>a <00:25:41.920>little <00:25:42.095>bit <00:25:42.270>tricky <00:25:42.445>with <00:25:42.620>this <00:25:42.795>one

582
00:25:43.805 --> 00:25:47.725
<00:25:43.805>because, <00:25:43.980>um, <00:25:44.155>there <00:25:44.330>is <00:25:44.505>some <00:25:44.680>randomness <00:25:44.855>in <00:25:45.030>this <00:25:45.205>workflow,

583
00:25:47.825 --> 00:25:50.445
<00:25:47.825>so <00:25:47.965>maybe <00:25:48.105>it's <00:25:48.245>not <00:25:48.385>a <00:25:48.525>good <00:25:48.665>idea <00:25:48.805>to <00:25:48.945>actually <00:25:49.085>demo <00:25:49.225>those.

584
00:25:50.445 --> 00:25:53.045
<00:25:50.445>Well, <00:25:50.620>let's <00:25:50.794>see. <00:25:50.970>So <00:25:51.145>let's <00:25:51.320>say <00:25:51.495>we <00:25:51.669>want <00:25:51.845>to

585
00:25:53.595 --> 00:25:56.525
<00:25:53.595>load <00:25:53.750>some <00:25:53.906>data <00:25:54.061>from <00:25:54.217>a <00:25:54.372>quite <00:25:54.528>unreliable <00:25:54.683>source <00:25:54.839>that <00:25:54.995>fails

586
00:25:56.525 --> 00:25:58.725
<00:25:56.525>with <00:25:56.991>six, <00:25:57.458>6% <00:25:57.925>probability.

587
00:25:59.155 --> 00:26:02.165
<00:25:59.155>Then <00:25:59.282>we <00:25:59.409>want <00:25:59.536>to <00:25:59.664>do <00:25:59.791>an <00:25:59.918>expensive <00:26:00.045>inference <00:26:00.173>task <00:26:00.300>that <00:26:00.427>we, <00:26:00.555>um,

588
00:26:02.395 --> 00:26:06.605
<00:26:02.395>yeah, <00:26:02.522>after <00:26:02.649>that <00:26:02.776>has <00:26:02.904>one <00:26:03.031>then, <00:26:03.158>uh, <00:26:03.285>some, <00:26:03.413>some <00:26:03.540>time <00:26:03.667>went <00:26:03.795>by

589
00:26:06.785 --> 00:26:08.085
<00:26:06.785>and <00:26:07.019>then <00:26:07.253>we <00:26:07.487>want <00:26:07.721>to <00:26:07.955>upload

590
00:26:08.085 --> 00:26:11.965
<00:26:08.085>to <00:26:08.260>the <00:26:08.435>same <00:26:08.610>unreliable <00:26:08.785>destination <00:26:08.960>also <00:26:09.135>fails <00:26:09.310>with <00:26:09.485>six,

591
00:26:12.185 --> 00:26:13.445
<00:26:12.185>6% <00:26:13.319>probability.

592
00:26:13.625 --> 00:26:17.045
<00:26:13.625>Um, <00:26:13.765>I <00:26:13.905>simulated <00:26:14.045>to <00:26:14.185>that <00:26:14.325>with <00:26:14.465>a <00:26:14.605>simple <00:26:14.745>python <00:26:14.885>script <00:26:15.025>here.

593
00:26:17.265 --> 00:26:19.925
<00:26:17.265>We <00:26:17.420>import <00:26:17.576>random <00:26:17.731>and <00:26:17.887>choose <00:26:18.042>from <00:26:18.198>a <00:26:18.353>random <00:26:18.509>exit <00:26:18.665>code.

594
00:26:20.065 --> 00:26:23.925
<00:26:20.065>So <00:26:20.240>yeah. <00:26:20.415>Um, <00:26:20.590>and <00:26:20.765>it <00:26:20.940>fails <00:26:21.115>with <00:26:21.290>66% <00:26:21.465>probability.

595
00:26:24.025 --> 00:26:27.565
<00:26:24.025>So <00:26:24.180>let's <00:26:24.336>see <00:26:24.491>how <00:26:24.647>that <00:26:24.802>went <00:26:24.958>so <00:26:25.113>far. <00:26:25.269>Alright. <00:26:25.425>Okay.

596
00:26:28.225 --> 00:26:33.045
<00:26:28.225>Um, <00:26:28.380>the <00:26:28.536>first, <00:26:28.691>the <00:26:28.847>first <00:26:29.002>try, <00:26:29.158>uh, <00:26:29.313>yeah, <00:26:29.469>failed <00:26:29.625>obviously

597
00:26:33.555 --> 00:26:35.125
<00:26:33.555>also <00:26:33.905>the <00:26:34.255>first <00:26:34.605>retry <00:26:34.955>failed.

598
00:26:35.225 --> 00:26:36.245
<00:26:35.225>The <00:26:35.531>second <00:26:35.837>retry <00:26:36.142>failed.

599
00:26:36.245 --> 00:26:39.525
<00:26:36.245>And <00:26:36.385>then <00:26:36.524>finally <00:26:36.665>on <00:26:36.804>the, <00:26:36.945>on <00:26:37.084>the <00:26:37.225>third <00:26:37.364>retry, <00:26:37.504>the <00:26:37.645>loading

600
00:26:39.525 --> 00:26:41.365
<00:26:39.525>of <00:26:39.875>the <00:26:40.225>data <00:26:40.575>was <00:26:40.925>successful.

601
00:26:41.635 --> 00:26:43.660
<00:26:41.635>Then <00:26:41.835>we <00:26:42.035>can <00:26:42.235>do <00:26:42.435>our <00:26:42.635>expensive <00:26:42.835>inference <00:26:43.035>task

602
00:26:43.705 --> 00:26:47.205
<00:26:43.705>and <00:26:43.832>then <00:26:43.959>we <00:26:44.086>can <00:26:44.214>do <00:26:44.341>the <00:26:44.468>upload <00:26:44.595>task <00:26:44.723>that <00:26:44.850>also <00:26:44.977>again <00:26:45.105>fails.

603
00:26:47.205 --> 00:26:50.405
<00:26:47.205>But <00:26:47.360>you <00:26:47.516>can <00:26:47.671>see <00:26:47.827>retries <00:26:47.982>help <00:26:48.138>us <00:26:48.293>here <00:26:48.449>quite <00:26:48.605>nicely.

604
00:26:51.065 --> 00:26:55.175
<00:26:51.065>And <00:26:51.298>um, <00:26:51.531>yeah, <00:26:51.765>it <00:26:51.998>really, <00:26:52.231>um, <00:26:52.465>prevents

605
00:26:55.175 --> 00:26:58.295
<00:26:55.175>that <00:26:55.375>the <00:26:55.575>whole <00:26:55.774>entire <00:26:55.975>workflow <00:26:56.175>fails <00:26:56.375>just, <00:26:56.575>uh,

606
00:26:58.295 --> 00:27:00.295
<00:26:58.295>certain <00:26:58.575>steps <00:26:58.855>in <00:26:59.135>the <00:26:59.415>workflow <00:26:59.695>fail

607
00:27:00.555 --> 00:27:05.135
<00:27:00.555>and <00:27:00.755>certain, <00:27:00.955>uh, <00:27:01.155>tasks <00:27:01.355>are <00:27:01.555>re <00:27:01.755>tried <00:27:01.955>them.

608
00:27:05.365 --> 00:27:07.855
<00:27:05.365>Alright? <00:27:05.540>And <00:27:05.715>now <00:27:05.890>I <00:27:06.065>am <00:27:06.240>nearly <00:27:06.415>at <00:27:06.590>the <00:27:06.765>end,

609
00:27:09.835 --> 00:27:12.335
<00:27:09.835>we <00:27:10.035>learned <00:27:10.235>quite <00:27:10.435>a <00:27:10.635>lot <00:27:10.835>about <00:27:11.035>the <00:27:11.235>functionality

610
00:27:12.335 --> 00:27:14.135
<00:27:12.335>of <00:27:12.568>there's <00:27:12.801>of <00:27:13.035>course <00:27:13.268>much <00:27:13.501>more, <00:27:13.735>right?

611
00:27:14.285 --> 00:27:16.655
<00:27:14.285>Like, <00:27:14.565>like <00:27:14.845>paralyzation <00:27:15.125>limits, <00:27:15.405>andron <00:27:15.685>workflows

612
00:27:16.655 --> 00:27:17.655
<00:27:16.655>and <00:27:17.105>demon <00:27:17.555>containers

613
00:27:17.655 --> 00:27:20.135
<00:27:17.655>and <00:27:17.795>all <00:27:17.935>the <00:27:18.075>stuff <00:27:18.215>that <00:27:18.355>I <00:27:18.495>can't <00:27:18.635>pack <00:27:18.774>in <00:27:18.915>30 <00:27:19.055>minutes.

614
00:27:20.875 --> 00:27:24.665
<00:27:20.875>Um, <00:27:21.075>but <00:27:21.275>the <00:27:21.475>final <00:27:21.675>question <00:27:21.875>here <00:27:22.075>is <00:27:22.275>should

615
00:27:24.665 --> 00:27:25.745
<00:27:24.665>we <00:27:24.908>use <00:27:25.150>Argo <00:27:25.394>or <00:27:25.637>not?

616
00:27:26.005 --> 00:27:28.705
<00:27:26.005>My <00:27:26.145>general <00:27:26.285>opinion <00:27:26.425>is <00:27:26.565>of <00:27:26.705>course, <00:27:26.845>yes, <00:27:26.985>we <00:27:27.125>should <00:27:27.265>use <00:27:27.405>that.

617
00:27:28.965 --> 00:27:31.665
<00:27:28.965>But <00:27:29.198>a <00:27:29.431>quick <00:27:29.665>and <00:27:29.898>more <00:27:30.131>nuanced <00:27:30.365>look.

618
00:27:31.685 --> 00:27:34.425
<00:27:31.685>So <00:27:31.918>when <00:27:32.151>you <00:27:32.385>should <00:27:32.618>not <00:27:32.851>use <00:27:33.085>Argo,

619
00:27:34.685 --> 00:27:37.345
<00:27:34.685>if <00:27:34.860>you <00:27:35.034>are <00:27:35.210>only <00:27:35.385>doing <00:27:35.560>relatively <00:27:35.735>small <00:27:35.909>ML <00:27:36.085>projects,

620
00:27:37.345 --> 00:27:38.865
<00:27:37.345>both <00:27:37.573>in <00:27:37.801>terms <00:27:38.029>of <00:27:38.257>scope <00:27:38.485>and <00:27:38.713>team,

621
00:27:39.125 --> 00:27:41.825
<00:27:39.125>or <00:27:39.325>if <00:27:39.525>you're <00:27:39.725>only <00:27:39.925>building <00:27:40.125>POC <00:27:40.325>uh, <00:27:40.525>stuff,

622
00:27:42.015 --> 00:27:43.825
<00:27:42.015>then <00:27:42.248>you <00:27:42.481>don't <00:27:42.715>need <00:27:42.948>Argo <00:27:43.181>right <00:27:43.415>away.

623
00:27:43.965 --> 00:27:46.425
<00:27:43.965>In <00:27:44.165>such <00:27:44.365>cases, <00:27:44.564>simpler <00:27:44.764>tools <00:27:44.965>like <00:27:45.165>DVC <00:27:45.365>pipelines

624
00:27:46.425 --> 00:27:49.345
<00:27:46.425>or <00:27:46.600>just <00:27:46.774>a <00:27:46.950>stack <00:27:47.125>of <00:27:47.300>Python <00:27:47.475>scripts, <00:27:47.649>maybe <00:27:47.825>efficient.

625
00:27:49.525 --> 00:27:51.385
<00:27:49.525>And <00:27:49.725>if <00:27:49.925>you <00:27:50.125>have <00:27:50.325>already <00:27:50.525>cube <00:27:50.725>flow <00:27:50.925>running

626
00:27:51.685 --> 00:27:54.105
<00:27:51.685>and <00:27:51.885>are <00:27:52.085>satisfied <00:27:52.284>with <00:27:52.485>the <00:27:52.685>range <00:27:52.885>of <00:27:53.085>functions,

627
00:27:54.135 --> 00:27:56.905
<00:27:54.135>then <00:27:54.275>it <00:27:54.415>really <00:27:54.555>makes <00:27:54.695>no <00:27:54.835>sense <00:27:54.975>to <00:27:55.115>switch <00:27:55.254>over <00:27:55.395>to <00:27:55.535>Argo.

628
00:27:57.125 --> 00:27:58.785
<00:27:57.125>So <00:27:57.358>if <00:27:57.591>you, <00:27:57.825>you're <00:27:58.058>heavily <00:27:58.291>invested <00:27:58.525>there,

629
00:27:59.045 --> 00:28:00.825
<00:27:59.045>the <00:27:59.325>whole <00:27:59.605>hyper <00:27:59.885>parameter <00:28:00.165>tuning <00:28:00.445>thing

630
00:28:00.825 --> 00:28:02.385
<00:28:00.825>and <00:28:01.025>model <00:28:01.225>serving <00:28:01.425>thing <00:28:01.625>and <00:28:01.825>so <00:28:02.025>on, <00:28:02.225>stay

631
00:28:02.385 --> 00:28:03.425
<00:28:02.385>with <00:28:02.619>cube <00:28:02.853>flow <00:28:03.087>for <00:28:03.321>now.

632
00:28:03.685 --> 00:28:05.545
<00:28:03.685>Um, <00:28:03.885>it <00:28:04.085>also <00:28:04.284>runs <00:28:04.485>Argo <00:28:04.685>under <00:28:04.885>the <00:28:05.085>hood,

633
00:28:05.565 --> 00:28:06.945
<00:28:05.565>so <00:28:05.742>you <00:28:05.919>are <00:28:06.097>in <00:28:06.274>good <00:28:06.452>hands <00:28:06.629>there, <00:28:06.807>right?

634
00:28:07.765 --> 00:28:09.785
<00:28:07.765>And <00:28:07.998>since <00:28:08.231>Argo <00:28:08.465>workflow <00:28:08.698>runs <00:28:08.931>on <00:28:09.165>Kubernetes,

635
00:28:10.165 --> 00:28:12.345
<00:28:10.165>if <00:28:10.365>your <00:28:10.565>team <00:28:10.764>has <00:28:10.965>little <00:28:11.165>experience <00:28:11.365>with <00:28:11.565>Kubernetes,

636
00:28:12.405 --> 00:28:14.825
<00:28:12.405>you <00:28:12.638>might <00:28:12.871>want <00:28:13.105>to <00:28:13.338>consider <00:28:13.571>other <00:28:13.805>tools

637
00:28:14.855 --> 00:28:18.105
<00:28:14.855>that <00:28:15.030>don't <00:28:15.205>require <00:28:15.380>much <00:28:15.555>experience <00:28:15.730>in <00:28:15.905>this <00:28:16.080>area <00:28:16.255>such

638
00:28:18.105 --> 00:28:19.785
<00:28:18.105>as <00:28:18.455>Apache <00:28:18.805>Airflow <00:28:19.155>or <00:28:19.505>Luigi.

639
00:28:19.965 --> 00:28:22.905
<00:28:19.965>Or <00:28:20.139>if <00:28:20.314>your <00:28:20.490>company <00:28:20.665>only <00:28:20.840>works <00:28:21.014>with <00:28:21.189>in-house <00:28:21.365>hardware

640
00:28:22.965 --> 00:28:25.185
<00:28:22.965>and <00:28:23.198>the <00:28:23.431>all <00:28:23.665>powerful <00:28:23.898>CIS <00:28:24.131>admin <00:28:24.365>believe

641
00:28:25.185 --> 00:28:26.465
<00:28:25.185>that <00:28:25.415>Kubernetes <00:28:25.645>is <00:28:25.876>really <00:28:26.106>the <00:28:26.337>devil,

642
00:28:26.495 --> 00:28:29.585
<00:28:26.495>well <00:28:26.669>then <00:28:26.844>you <00:28:27.020>have <00:28:27.195>a <00:28:27.370>problem <00:28:27.544>introducing <00:28:27.719>Argo <00:28:27.895>there,

643
00:28:29.585 --> 00:28:32.065
<00:28:29.585>but <00:28:29.712>I <00:28:29.839>guess <00:28:29.966>you <00:28:30.094>have <00:28:30.221>a <00:28:30.348>hard <00:28:30.475>time <00:28:30.603>there <00:28:30.730>anyway, <00:28:30.857>so <00:28:30.985>yeah.

644
00:28:32.565 --> 00:28:36.355
<00:28:32.565>Um, <00:28:32.798>when <00:28:33.031>should <00:28:33.265>you <00:28:33.498>definitely <00:28:33.731>use <00:28:33.965>Argo?

645
00:28:36.375 --> 00:28:38.875
<00:28:36.375>If <00:28:36.608>your <00:28:36.841>organization <00:28:37.075>is <00:28:37.308>already <00:28:37.541>using <00:28:37.775>Kubernetes

646
00:28:39.055 --> 00:28:40.115
<00:28:39.055>for <00:28:39.532>managing <00:28:40.009>containers,

647
00:28:40.385 --> 00:28:43.275
<00:28:40.385>then <00:28:40.560>choosing <00:28:40.735>Argo <00:28:40.910>workflows <00:28:41.085>is <00:28:41.260>really <00:28:41.435>the <00:28:41.610>natural <00:28:41.785>choice.

648
00:28:43.285 --> 00:28:46.195
<00:28:43.285>Successful <00:28:43.440>deployment <00:28:43.596>of <00:28:43.751>Argo <00:28:43.907>is <00:28:44.062>really <00:28:44.218>just <00:28:44.373>one <00:28:44.529>or <00:28:44.685>two

649
00:28:46.215 --> 00:28:47.755
<00:28:46.215>or <00:28:46.492>maybe <00:28:46.769>three <00:28:47.046>Yammer <00:28:47.323>fights <00:28:47.601>away.

650
00:28:47.755 --> 00:28:49.235
<00:28:47.755>And <00:28:47.945>then <00:28:48.135>you <00:28:48.325>have <00:28:48.516>Argo <00:28:48.706>up <00:28:48.896>and <00:28:49.087>running.

651
00:28:49.615 --> 00:28:51.995
<00:28:49.615>If <00:28:49.815>you <00:28:50.015>want <00:28:50.215>to <00:28:50.415>distribute <00:28:50.615>your <00:28:50.815>workflows <00:28:51.015>across

652
00:28:52.595 --> 00:28:54.715
<00:28:52.595>multiple <00:28:52.945>clusters <00:28:53.295>or <00:28:53.645>cloud <00:28:53.995>providers

653
00:28:54.715 --> 00:28:56.075
<00:28:54.715>or <00:28:54.918>are <00:28:55.123>perhaps <00:28:55.327>looking <00:28:55.531>for <00:28:55.735>a <00:28:55.939>way

654
00:28:56.075 --> 00:28:59.475
<00:28:56.075>to <00:28:56.250>deploy <00:28:56.425>workflows <00:28:56.600>in <00:28:56.775>a <00:28:56.950>hybrid <00:28:57.125>environment <00:28:57.300>of <00:28:57.475>on-premise,

655
00:28:59.475 --> 00:29:02.515
<00:28:59.475>on <00:28:59.708>cloud <00:28:59.941>platform, <00:29:00.175>uh, <00:29:00.408>that, <00:29:00.641>uh, <00:29:00.875>infrastructure,

656
00:29:02.545 --> 00:29:04.595
<00:29:02.545>then <00:29:02.720>Argo <00:29:02.895>is <00:29:03.070>really <00:29:03.245>the <00:29:03.420>right <00:29:03.595>tool <00:29:03.770>for <00:29:03.945>you.

657
00:29:04.695 --> 00:29:07.715
<00:29:04.695>And <00:29:04.835>of <00:29:04.975>course, <00:29:05.115>if <00:29:05.254>you <00:29:05.395>want <00:29:05.534>to <00:29:05.675>tackle <00:29:05.814>complex <00:29:05.955>ML <00:29:06.095>projects,

658
00:29:07.935 --> 00:29:10.115
<00:29:07.935>if <00:29:08.135>your <00:29:08.335>machine <00:29:08.534>learning <00:29:08.735>pipeline <00:29:08.935>has <00:29:09.135>various <00:29:09.335>stages,

659
00:29:10.515 --> 00:29:12.035
<00:29:10.515>parallelization, <00:29:11.199>conditional <00:29:11.883>logic,

660
00:29:12.705 --> 00:29:15.235
<00:29:12.705>then <00:29:12.938>Argo <00:29:13.171>workflows <00:29:13.405>can <00:29:13.638>really <00:29:13.871>help <00:29:14.105>manage

661
00:29:15.335 --> 00:29:16.475
<00:29:15.335>all <00:29:15.677>the <00:29:16.019>stuff <00:29:16.360>efficiently.

662
00:29:16.655 --> 00:29:19.355
<00:29:16.655>And <00:29:16.855>Argo <00:29:17.055>workflows <00:29:17.254>really <00:29:17.455>brings <00:29:17.655>data <00:29:17.855>scientists, <00:29:18.055>engineers,

663
00:29:19.355 --> 00:29:21.035
<00:29:19.355>and <00:29:19.705>DevOps <00:29:20.055>teams <00:29:20.405>closer <00:29:20.755>together

664
00:29:21.065 --> 00:29:22.595
<00:29:21.065>because <00:29:21.753>it <00:29:22.442>ensures

665
00:29:22.595 --> 00:29:24.675
<00:29:22.595>that <00:29:22.795>your <00:29:22.995>ML <00:29:23.195>pipelines <00:29:23.395>have <00:29:23.595>a <00:29:23.795>clear <00:29:23.995>structure

666
00:29:25.215 --> 00:29:27.315
<00:29:25.215>so <00:29:25.415>everyone <00:29:25.615>in <00:29:25.814>the <00:29:26.014>team <00:29:26.215>can <00:29:26.415>easily <00:29:26.615>understand

667
00:29:27.385 --> 00:29:29.555
<00:29:27.385>what <00:29:27.585>is <00:29:27.785>happening, <00:29:27.985>what <00:29:28.185>needs <00:29:28.385>to <00:29:28.585>be <00:29:28.785>done,

668
00:29:29.775 --> 00:29:30.835
<00:29:29.775>and <00:29:30.013>how <00:29:30.252>they <00:29:30.490>can <00:29:30.729>help.

669
00:29:31.055 --> 00:29:33.995
<00:29:31.055>And <00:29:31.210>in <00:29:31.366>addition, <00:29:31.521>well <00:29:31.677>yamo <00:29:31.832>you <00:29:31.988>can <00:29:32.143>version <00:29:32.299>control <00:29:32.455>this

670
00:29:34.235 --> 00:29:36.715
<00:29:34.235>configuration <00:29:34.468>and <00:29:34.701>makes <00:29:34.935>the <00:29:35.168>whole <00:29:35.401>thing <00:29:35.635>reproducible

671
00:29:36.855 --> 00:29:39.795
<00:29:36.855>and <00:29:37.030>ensure <00:29:37.205>that <00:29:37.380>your <00:29:37.555>workflow <00:29:37.730>remain <00:29:37.905>consistent <00:29:38.080>in <00:29:38.255>different

672
00:29:39.795 --> 00:29:42.085
<00:29:39.795>environments <00:29:40.261>and <00:29:40.728>during <00:29:41.195>deployment.

673
00:29:43.265 --> 00:29:47.325
<00:29:43.265>And <00:29:43.420>now <00:29:43.576>in <00:29:43.731>the <00:29:43.887>end, <00:29:44.042>sorry. <00:29:44.198>Um, <00:29:44.353>thanks <00:29:44.509>for <00:29:44.665>listening.

674
00:29:47.425 --> 00:29:51.205
<00:29:47.425>Um, <00:29:47.541>all <00:29:47.658>the <00:29:47.774>tools <00:29:47.891>are <00:29:48.008>linked <00:29:48.125>under <00:29:48.241>the <00:29:48.358>one <00:29:48.475>one <00:29:48.591>link <00:29:48.708>KU <00:29:48.825>me

675
00:29:51.215 --> 00:29:52.245
<00:29:51.215>slash <00:29:52.141>mops.

676
00:29:52.825 --> 00:29:55.765
<00:29:52.825>Um, <00:29:53.000>I <00:29:53.175>don't <00:29:53.350>know <00:29:53.525>how <00:29:53.700>we <00:29:53.875>are <00:29:54.050>with <00:29:54.225>questions.

677
00:29:56.555 --> 00:29:58.325
<00:29:56.555>Well, <00:29:56.835>there <00:29:57.115>were <00:29:57.395>two <00:29:57.675>questions <00:29:57.955>actually.

678
00:29:58.625 --> 00:30:01.485
<00:29:58.625>One <00:29:58.825>is, <00:29:59.025>can <00:29:59.225>you <00:29:59.425>run <00:29:59.625>simultaneously <00:29:59.825>Argo <00:30:00.025>CD

679
00:30:01.485 --> 00:30:02.565
<00:30:01.485>and <00:30:01.971>Argo <00:30:02.457>workflows?

680
00:30:02.945 --> 00:30:06.965
<00:30:02.945>Um, <00:30:03.100>yes. <00:30:03.256>Since <00:30:03.411>Argo <00:30:03.567>CD <00:30:03.722>is <00:30:03.878>based <00:30:04.033>on <00:30:04.189>Argo <00:30:04.345>workflows,

681
00:30:06.985 --> 00:30:10.445
<00:30:06.985>yes <00:30:07.125>you <00:30:07.264>can, <00:30:07.405>uh, <00:30:07.544>you <00:30:07.685>can <00:30:07.824>for <00:30:07.965>example <00:30:08.104>also <00:30:08.245>deploy <00:30:08.385>Argo

682
00:30:11.285 --> 00:30:13.965
<00:30:11.285>workflows, <00:30:11.635>workflows <00:30:11.985>with <00:30:12.335>Argo <00:30:12.685>cd.

683
00:30:13.965 --> 00:30:16.605
<00:30:13.965>So <00:30:14.105>that <00:30:14.245>is <00:30:14.385>possible <00:30:14.524>you <00:30:14.665>can <00:30:14.804>also <00:30:14.945>test <00:30:15.084>your <00:30:15.225>Argo <00:30:15.365>workflows

684
00:30:16.605 --> 00:30:18.885
<00:30:16.605>with <00:30:16.885>Argo <00:30:17.165>cd <00:30:17.445>that <00:30:17.725>yeah, <00:30:18.005>no

685
00:30:18.885 --> 00:30:19.885
<00:30:18.885>Problem. <00:30:19.185>Another <00:30:19.485>most <00:30:19.785>smart,

686
00:30:19.885 --> 00:30:20.965
<00:30:19.885>as <00:30:20.370>I <00:30:20.857>mentioned,

687
00:30:20.965 --> 00:30:22.925
<00:30:20.965>several <00:30:21.198>other <00:30:21.431>flow <00:30:21.665>tools, <00:30:21.898>the <00:30:22.131>ML <00:30:22.365>flow.

688
00:30:22.985 --> 00:30:25.605
<00:30:22.985>Why <00:30:23.159>not <00:30:23.334>ML <00:30:23.510>flow <00:30:23.685>instead <00:30:23.860>of <00:30:24.034>Argo <00:30:24.209>workflow? <00:30:24.385>What?

689
00:30:26.625 --> 00:30:27.765
<00:30:26.625>Um, <00:30:26.967>yeah, <00:30:27.309>good <00:30:27.651>question.

690
00:30:27.865 --> 00:30:31.685
<00:30:27.865>Um, <00:30:28.020>we <00:30:28.176>are <00:30:28.331>currently <00:30:28.487>using <00:30:28.642>ML <00:30:28.798>Flow <00:30:28.953>and <00:30:29.109>Argo <00:30:29.265>together.

691
00:30:32.185 --> 00:30:33.325
<00:30:32.185>Um, <00:30:32.527>for <00:30:32.869>ML <00:30:33.211>flow.

692
00:30:33.345 --> 00:30:37.885
<00:30:33.345>We <00:30:33.485>just <00:30:33.625>use <00:30:33.765>it <00:30:33.905>for <00:30:34.045>storing, <00:30:34.185>um, <00:30:34.325>results <00:30:34.465>and <00:30:34.605>um, <00:30:34.745>and,

693
00:30:38.105 --> 00:30:39.965
<00:30:38.105>and <00:30:38.338>use <00:30:38.571>it <00:30:38.805>as <00:30:39.038>a <00:30:39.271>data <00:30:39.505>registry.

694
00:30:40.225 --> 00:30:43.245
<00:30:40.225>But <00:30:40.425>for <00:30:40.625>the <00:30:40.824>pipelining <00:30:41.024>we <00:30:41.225>don't <00:30:41.425>use <00:30:41.625>it.

695
00:30:43.425 --> 00:30:47.565
<00:30:43.425>Um, <00:30:43.565>the <00:30:43.705>main <00:30:43.845>reason <00:30:43.985>for <00:30:44.125>this <00:30:44.264>is <00:30:44.405>that <00:30:44.544>in <00:30:44.685>my <00:30:44.825>opinion,

696
00:30:47.675 --> 00:30:49.245
<00:30:47.675>Argo <00:30:47.908>workflows <00:30:48.141>is <00:30:48.375>a <00:30:48.608>lot <00:30:48.841>more <00:30:49.075>powerful

697
00:30:49.245 --> 00:30:52.085
<00:30:49.245>because <00:30:49.445>you <00:30:49.645>can <00:30:49.844>run <00:30:50.044>like <00:30:50.245>everything <00:30:50.445>in <00:30:50.645>it,

698
00:30:52.085 --> 00:30:53.645
<00:30:52.085>everything <00:30:52.318>you <00:30:52.551>can <00:30:52.785>put <00:30:53.018>in <00:30:53.251>a <00:30:53.485>container,

699
00:30:53.645 --> 00:30:54.925
<00:30:53.645>you <00:30:53.875>can <00:30:54.105>run <00:30:54.336>in <00:30:54.566>Argo <00:30:54.797>workflows

700
00:30:54.925 --> 00:30:57.285
<00:30:54.925>and <00:30:55.100>that <00:30:55.274>it's <00:30:55.450>just <00:30:55.625>not <00:30:55.800>possible <00:30:55.975>in <00:30:56.149>ML <00:30:56.325>flows.

701
00:30:57.665 --> 00:31:00.205
<00:30:57.665>Um, <00:30:57.840>they <00:30:58.014>are <00:30:58.190>only <00:30:58.365>Python <00:30:58.540>Co <00:30:58.715>can <00:30:58.889>be <00:30:59.065>run.

702
00:31:00.665 --> 00:31:02.405
<00:31:00.665>So <00:31:00.945>thank <00:31:01.225>you. <00:31:01.504>Thank <00:31:01.784>you <00:31:02.065>Alka.