WEBVTT

1
00:00:20.420 --> 00:00:26.090
WH11NE- Sunrise: Um,

2
00:00:27.120 --> 00:00:39.170
WH11NE- Sunrise: Yup! Actually, literally just got my email for for congratulating me for ten years here, which is kind of fine blow up. Um, right.

3
00:00:39.320 --> 00:00:56.959
WH11NE- Sunrise: So I was invited in here to talk about uh, uh, next generation, and I's why we should switch uh why we should switch sooner rather than later. Um! And initially the scope was a bit more about the facilities and all that. Doesn't, too. But I wanted to

4
00:00:57.050 --> 00:01:00.429
WH11NE- Sunrise: move that more towards so discussing.

5
00:01:00.630 --> 00:01:09.580
WH11NE- Sunrise: Uh why it's useful to change over and kind of It's almost even more the culture around it rather than uh any particular

6
00:01:09.670 --> 00:01:23.840
WH11NE- Sunrise: uh technical piece of implementation. Um. So I've organized this into two parts uh part. One is uh just what's awkward or in the uproot coffee uh what's provided? Uh what kind of extensibility has.

7
00:01:23.850 --> 00:01:33.410
WH11NE- Sunrise: So that's going through. Uh, if you don't know what we're talking about. This should hopefully get you up to speed with what we're trying to provide on this thing. Um,

8
00:01:33.420 --> 00:01:49.759
WH11NE- Sunrise: I haven't gone into the facilities as much as aside from the fact that, uh, we provide ways to access them, I think that can easily fill an entire other talk. Uh, just for how to how to get access to compute and scale out. Um,

9
00:01:49.770 --> 00:02:09.180
WH11NE- Sunrise: but I uh trying to make sure we're all on the same basis for going into part two uh which I would like to be more open in the discussion, and we'll see how much it ends up being that uh about why it's useful to change over early, regardless of uh, which flavor of next generation analysis, tool. Choose

10
00:02:09.190 --> 00:02:19.990
WH11NE- Sunrise: uh, just mechanically, in terms of computation uh what it really means to enter into analysis, tool design as users. And how how do we change the

11
00:02:20.000 --> 00:02:39.720
WH11NE- Sunrise: the feedback loop that we have in our energy physics software uh that, or that we've had for at least a decade, if not more uh where we're very focused on getting getting the script out and getting uh to our science as soon as possible, and how that can actually be a bit slow compared to uh both thinking about what to do.

12
00:02:39.730 --> 00:02:55.570
WH11NE- Sunrise: Um, There's also other social aspects to this, like professional development concerns um, And then I try to tie all that up into. Uh, why you should really try things now as opposed to putting it off later in the name of getting things done.

13
00:02:55.910 --> 00:02:57.110
WH11NE- Sunrise: Okay,

14
00:02:57.960 --> 00:03:03.680
WH11NE- Sunrise: if my computer let me advance the slides uh so on the coffee,

15
00:03:03.910 --> 00:03:16.710
WH11NE- Sunrise: and why I call in their analysis uh came into existence, as is at least from my perspective. Um! And mostly next to um. So yeah it

16
00:03:16.920 --> 00:03:23.989
WH11NE- Sunrise: we in high energy physics make quite a great deal of use of uh machine learning as things are right now.

17
00:03:24.000 --> 00:03:42.309
WH11NE- Sunrise: Um! And back in the early days of all of this there was a pretty big mismatch between uh the way data was stored in the root file and format it uh a large sloth of machine learning libraries that were out there, except for, of course, Tm.

18
00:03:42.320 --> 00:03:57.510
WH11NE- Sunrise: Um and the primacy of uh tensorflow and uh, pi torch, and all of that evolved quite rapidly over the course uh, over the course of the decade or so, starting in two thousand and twelve with the boom and whatnot

19
00:03:57.540 --> 00:04:05.839
WH11NE- Sunrise: um. And this corresponded also to uh big data. Technology is starting to come into uh,

20
00:04:06.180 --> 00:04:20.340
WH11NE- Sunrise: uh, or starting to mature people starting to understand how they wanted to manipulate, to talk about their data. Uh, and then we were working with Pyro at the time. Um! And then this goes to underlying uh

21
00:04:20.470 --> 00:04:33.889
WH11NE- Sunrise: at the end, you know, at the time, because this is getting uh small, or this differences getting smaller, The difference between the kind of data science that we do, and the way we approach our data versus that of what you find in the industry.

22
00:04:33.900 --> 00:04:48.170
WH11NE- Sunrise: Um, they the data that they they use at the time. It's very, very different, typically very rectangular arms has all the structure varies and links from event for event, over multiple, different uh or over multiple kinds of uh,

23
00:04:48.200 --> 00:04:56.699
WH11NE- Sunrise: uh, uh, uh, or multiple concepts within the data that we're trying to describe in order to do it because we have pretty complex data.

24
00:04:56.950 --> 00:05:11.819
WH11NE- Sunrise: Um. And so the toolkit that you need to describe that in order to do machine learning systems, et cetera, um was and still remains. I would say to some extent, uh vastly different from the baseline requirements of doing industry, data, Science?

25
00:05:11.890 --> 00:05:13.420
WH11NE- Sunrise: Um.

26
00:05:13.440 --> 00:05:32.530
WH11NE- Sunrise: So into that, uh what you saw or what you saw come into existence of time. Was this uh scientific uh python ecosystem. So people needed some way in in order to uh start from a list of basic tools, and uh refine the five and five into

27
00:05:32.540 --> 00:05:50.980
WH11NE- Sunrise: the kinds of science that they wanted to do. So You can see that the starting from python in this case by the most chosen because it was. It is a fairly easy program, and easy to teach someone to go with it really quick. Um. And so long as you don't put uh very numerically intensive or sorry computationally intensive

28
00:05:50.990 --> 00:06:01.060
WH11NE- Sunrise: uh programs inside of loops, it works very well for getting things done, just because it has a a very, very quick time to being able to use it.

29
00:06:01.250 --> 00:06:18.380
WH11NE- Sunrise: Uh, on top of that, over the years people have developed layers and layers of its um of specificity as opposed to abstraction, where they try to make sure that uh, by the time you're actually doing the science you want to do. You're built up on top of a

30
00:06:18.560 --> 00:06:24.330
WH11NE- Sunrise: um, a a series of librarians that each handle the jobs that you need done.

31
00:06:24.340 --> 00:06:43.830
WH11NE- Sunrise: So you can see that astrophy and Bio Python and all this other stuff, and those are using um all these different packages that you see here. It looks like the image um our Monte Carlo packages, et cetera, and then below that you get more and more abstractions. You get back to the base language. So then, After that you get map out of

32
00:06:43.840 --> 00:06:49.190
WH11NE- Sunrise: uh other kinds of ways of plotting things and projecting out data uh,

33
00:06:49.320 --> 00:07:05.749
WH11NE- Sunrise: and then toolkits, for instance, that collect all sorts of scientific methods that you can use further down on these packages, because the interface is standardized based on them. My um uh, or in other, or based on L by an ipad on things like that

34
00:07:05.760 --> 00:07:24.040
WH11NE- Sunrise: uh all going back to tying it all together with the language. So you see that this is kind of nested as you are, message and specificity with abstractions pointing back towards the uh, the base language python in this case, and that's allow people to make specific or easily make specific packages where people can be effective.

35
00:07:24.050 --> 00:07:42.459
WH11NE- Sunrise: For, uh, uh, the different disciplines in science, and what we found, because largely because our data are so complex. Uh is that a lot of the or a fair number of the pieces for us to be effective using this kind of ecosystem uh, we're missing

36
00:07:42.470 --> 00:07:47.309
WH11NE- Sunrise: uh, in particular, in terms of talking about the uh, our data and

37
00:07:47.320 --> 00:08:07.689
WH11NE- Sunrise: or the the data that we typically analyze root files in uh a fashion that is not using the python interpreter uh so trying to minute manipulate our data like It's not by data um which tends to be just a you know uh me uh square matrices or square tensors of the rectangular tensors. It's using the data.

38
00:08:07.700 --> 00:08:16.210
WH11NE- Sunrise: So uh this is where uh coffee and awkward array and upward came in, and they fill in

39
00:08:16.250 --> 00:08:26.899
WH11NE- Sunrise: the pieces of the scientific by on ecosystem, and allow us to bridge to all these other packages that already exist. Uh all uh, all of high energy physics data.

40
00:08:26.910 --> 00:08:45.040
WH11NE- Sunrise: Uh, when it comes in with the specific focus of uh looking at analysis data. So you've got uproot for a uh uh python, a python native way of reading and root files. Um. You then have awkward array, which can be thought of as an extension of numpy uh

41
00:08:45.280 --> 00:08:53.220
WH11NE- Sunrise: for dealing with the fact that our data for every single event that we have you're gonna have a different number of nuons, electron, et cetera.

42
00:08:53.400 --> 00:09:05.380
WH11NE- Sunrise: And then on top of that, and kind of spanning between a number of these more abstract uses is uh this package coffee that we've been developing a formula for about four or five years now,

43
00:09:05.390 --> 00:09:18.229
WH11NE- Sunrise: and what it aims to bring is uh actually in between in between kind of a a few different areas, and some of those areas has been broken back off into their own packages. Now, in fact,

44
00:09:18.430 --> 00:09:28.620
WH11NE- Sunrise: Um, So we tried to cover algorithms, like all the all the various things that you need in order to apply corrections uh people have extended this uh

45
00:09:28.930 --> 00:09:48.410
WH11NE- Sunrise: uh, in order, or in order to do like even uh things like that. Uh, and also visualization. So uh, in particular, histograms uh high energy physicists compared to the rest of the planet, use histograms in a very, very expressive way. Um! And not only as uh

46
00:09:48.420 --> 00:10:08.739
WH11NE- Sunrise: but there was. There was one place where the only, except where there's one specific discipline where the only accepted definition of the histogram was so uh something that had to have unit normalization. And we know we use this time for a while to different uh purpose than that, and we communicate a lot of information with them. So we had to have our own histogram stack uh or sorry uh uh

47
00:10:08.750 --> 00:10:21.669
WH11NE- Sunrise: way of building and then visualizing Instagram. Uh on top of that. So that's the sort of things that we were trying to provide with this package, and we also worked with the rest of the uh second head uh psychic, he ecosystem

48
00:10:21.680 --> 00:10:37.039
WH11NE- Sunrise: in order to make sure that the very core important pieces of this were talked about in the wider community, and this has resulted in the boost histogram package. Uh to name a few other thing or not. We're in, and a few other things that i'm not remembering right now. Sorry.

49
00:10:37.270 --> 00:10:55.849
WH11NE- Sunrise: Um. So now that we have that toolkit uh, and we have this new way, or have this column or analysis way of approaching our data. What is it? Um. So I think everyone's pretty familiar with um how you write an event loop and analysis. Uh you go. You get the objects that you're interested in.

50
00:10:55.860 --> 00:11:03.270
WH11NE- Sunrise: You write a for loop to filter through those objects yourself, and you write some. It is to select them if you like. Um,

51
00:11:03.360 --> 00:11:12.209
WH11NE- Sunrise: you make some derived values, and then uh, you do that for a single event, and then you repeat the whole process until you iterated through the entire data set.

52
00:11:12.380 --> 00:11:31.180
WH11NE- Sunrise: The fundamental difference uh difference with call in their analysis is that you load many events into contiguous arrays in parallel, and we'll talk about at the end of all or at the um in the more discussion oriented part of this uh how that works inside of computer. And why, that's important. But uh,

53
00:11:31.250 --> 00:11:47.910
WH11NE- Sunrise: at the end of the day you end up operating on uh columns of data at a time, rather uh and and then over uh individual columns of like new ones, or electrons or properties, and youons electrons as opposed to reading in your event operating on

54
00:11:47.920 --> 00:11:58.080
WH11NE- Sunrise: uh those particular uh those particular objects and values, and then uh calling it a day, and then doing it the next, or then running into the Mexico. So,

55
00:11:58.090 --> 00:12:17.470
WH11NE- Sunrise: uh, what awkward array does in particular is it helps you take care of a lot of the bookkeeping to make sure that when you apply cuts across events that you don't lose track of which thing or which object is, in which event, so that you can actually still do analysis on your data at the end of the day, whilst organizing it in a more effective way.

56
00:12:18.060 --> 00:12:36.359
WH11NE- Sunrise: Um! So just a concrete example of this uh, very quickly. Uh, this is what it would look like if you wanted to. Uh make a map cut, and then plot or uh plot. The distribution of electrons with Pt. Greater than thirty. Uh. This is how you would write it in a uh the good all t story that uh,

57
00:12:36.380 --> 00:12:40.359
WH11NE- Sunrise: uh, and then c. And

58
00:12:40.590 --> 00:12:58.679
WH11NE- Sunrise: if you wanted to take that and turn it into a column there. Analysis fully, explicitly written in C. This is what it would look like, and that actually looks kind of Perry. Um, Because you're flooping over the events multiple times. You're looping over uh all the electrons

59
00:12:58.780 --> 00:13:08.069
WH11NE- Sunrise: uh flattened out over all the events. Um, you have to go back, and the green or mask things, and keep track of all the offsets between all the events, et cetera, et cetera.

60
00:13:08.120 --> 00:13:19.700
WH11NE- Sunrise: Um, But what this gets you at the end of the day is actually a more regular uh in uh memory access. So you could benefit from that in the process and the technical side of the processing.

61
00:13:19.850 --> 00:13:34.409
WH11NE- Sunrise: Um! What people have done in the context of uh, the nonpi package, for instance, is turn all these loops and different kinds of uh cuts and manipulations that you can do in the data uh into shorthand.

62
00:13:34.430 --> 00:13:43.830
WH11NE- Sunrise: So and then what we further done from that uh, with up an awkward array, and then some of the uh extensions that we put on top of that coffee

63
00:13:43.840 --> 00:13:55.880
WH11NE- Sunrise: is to turn it into uh something that looks much more similar to a physics object than it does uh to looping over the individual uh individual elements of specific objects that you're interested in.

64
00:13:56.020 --> 00:14:02.290
WH11NE- Sunrise: So you can develop a shorthand for all of that, and make it look very much like you are operating on

65
00:14:02.410 --> 00:14:10.990
WH11NE- Sunrise: an individual piece of data inside of a loop. But whereas uh, you know, you're actually loading in that electron over here and then cutting on it,

66
00:14:11.000 --> 00:14:25.750
WH11NE- Sunrise: you say, Okay, I want uh all the events with uh the met. I i'm sorry the Mac less than a hundred Gv. And all the events with electron Pt. Greater than thirty. So then you get the exact same cut that you have over here,

67
00:14:25.760 --> 00:14:34.530
WH11NE- Sunrise: and you can take this, and uh, or take that final set of data that you apply your cut to, and then fill that into a history

68
00:14:35.610 --> 00:14:42.289
WH11NE- Sunrise: over all the events. So if you you can see then how that kind of shorthand is very powerful and expresses

69
00:14:42.320 --> 00:14:52.270
WH11NE- Sunrise: um, and then you're also benefiting on top of that from creating a essentially a list of verbs that you can use to act on your data and build up the

70
00:14:52.360 --> 00:15:00.360
WH11NE- Sunrise: uh a language more or less for manipulating uh, manipulating and accessing your data and building up analysis.

71
00:15:00.660 --> 00:15:22.289
WH11NE- Sunrise: And uh, you can take that and uh, try to do and and try to do the typical uh, uh, embarrassingly parallel analysis to that where you load in your data, apply the same uh transformations to all the data that you load. Then keep track of, uh, all of the bookkeeping for histograms and uh

72
00:15:22.300 --> 00:15:38.149
WH11NE- Sunrise: output data that you have uh, and then part or uh sorry uh box set up and shipping out to where you need. And one of the main things that we did inside of coffee is uh make it so that doing from your local machine to desk

73
00:15:38.160 --> 00:15:52.800
WH11NE- Sunrise: or sorry, your local machine to a cluster or to uh, some intermediate science. Uh multi core machine is fairly straightforward, and you don't have to change your code too much. Aside from uh defining the configuration of the cluster that you want to use.

74
00:15:53.390 --> 00:15:55.460
WH11NE- Sunrise: So uh,

75
00:15:55.590 --> 00:15:56.990
WH11NE- Sunrise: this is

76
00:15:57.110 --> 00:16:07.580
WH11NE- Sunrise: uh pretty, or this is a fairly well adopted standard uh for process of the data, and you're probably all familiar with it from running, running your analysis as you have uh in the past.

77
00:16:07.730 --> 00:16:09.100
WH11NE- Sunrise: Um,

78
00:16:09.190 --> 00:16:20.289
WH11NE- Sunrise: we can actually skip that. Um! But what about like being able to actually go in and describe what you're doing in a way that makes sense to another business.

79
00:16:20.300 --> 00:16:37.619
WH11NE- Sunrise: Um. So if we go back to the example here uh this, for if you try to show this to someone else and really communicate with them about what you're doing uh you're not going to get very far like That's just a lot of information to read, and then figure out what it's doing. Uh. So

80
00:16:37.630 --> 00:16:48.329
WH11NE- Sunrise: this is, or this is why we went into the developing shorthand and uh annotations and object descriptions on top of this uh uh call on their data representation

81
00:16:48.530 --> 00:16:50.440
WH11NE- Sunrise: so that you can

82
00:16:50.490 --> 00:17:05.960
WH11NE- Sunrise: actually talk about physics objects when you're building your analysis, uh, and then distributing it to uh, distributing it to a cluster as opposed to talking about individual columns of data that you then need to assemble into. So we figured out um

83
00:17:06.060 --> 00:17:24.139
WH11NE- Sunrise: ways to make it look like you're working with the Uh physics. Analysis objects as opposed to individual calls data, and you can see that this starts to make a much more clear representation of what you're trying to do if you have your short hands available. So, for instance, uh choosing

84
00:17:24.250 --> 00:17:36.300
WH11NE- Sunrise: uh choosing events with two new ones, making sure that those new ones uh the some of the nuance charge is zero uh for every single event, and then selecting those and plotting, or in the

85
00:17:36.320 --> 00:17:39.869
WH11NE- Sunrise: calculating, the invariant mass of that time, you on system,

86
00:17:40.210 --> 00:17:44.679
WH11NE- Sunrise: and returning that as a histogram that you can analyze like It's the simple. It's

87
00:17:45.850 --> 00:17:55.129
WH11NE- Sunrise: um. And if you want to go and see even more details of this, you can see uh Nick's uh, I have tutorial from two thousand and twenty that that

88
00:17:55.870 --> 00:17:57.380
WH11NE- Sunrise: um.

89
00:17:57.760 --> 00:18:15.730
WH11NE- Sunrise: So going back to distributed computing for a moment Um, we actively support a variety of ways to scale out what you're trying to do. Um. So if you're using this set some I know some of the people in the audience are using the Cpc. And so you've interacted with that.

90
00:18:15.740 --> 00:18:29.029
WH11NE- Sunrise: Uh, we also have back end for Apache spark and parcel, and another one called Work Queue, which I think was demonstrated here uh, more recently by then Tovar. Uh, I think, in a coffee meeting a couple of weeks ago.

91
00:18:29.130 --> 00:18:37.869
WH11NE- Sunrise: Um and all, or what this does is, instead of talking directly to Condor uh needing to write scripts in order to

92
00:18:37.880 --> 00:18:51.779
WH11NE- Sunrise: uh excuse me needing the right scripts in order to interact with your batch queue uh that's abstracted away by this uh by this layer that I tend to call the execution. So this these packages called desk, it's spark and partial and more queue.

93
00:18:51.890 --> 00:18:56.269
WH11NE- Sunrise: Um. And this means that that's not long time by coffee. Um,

94
00:18:56.290 --> 00:19:11.550
WH11NE- Sunrise: but rather the execution engine project. So we're actually benefiting a lot from the work of the wider scientific python ecosystem in order to be able to use uh our clusters uh and our clusters in a more efficient way. Um,

95
00:19:11.590 --> 00:19:28.380
WH11NE- Sunrise: and uh in particular for the Lpc. We've had to uh make up our own uh specialized flavors of how we're describing the cluster that we're using, because we have some special needs here in terms of security and whatnot. Um. But overall this allows you to really separate

96
00:19:28.390 --> 00:19:39.479
WH11NE- Sunrise: the description of what you're trying to do, or how you're trying to do your compute uh from the actual uh, the actual analysis that you're trying to do uh compute them otherwise.

97
00:19:39.490 --> 00:20:02.109
WH11NE- Sunrise: Uh, and so that means that you only have to do a little bit of description of the cluster in order to be able to use it as opposed to maintaining your own match script, So that helps you, uh, think, or spend more time doing physics, and uh, spend less time hopefully, less time dealing with your cluster and trying to make sure it's configured directly, though we all know that the

98
00:20:02.120 --> 00:20:04.799
WH11NE- Sunrise: the clusters can occasionally take some time.

99
00:20:05.160 --> 00:20:06.580
WH11NE- Sunrise: Um,

100
00:20:06.640 --> 00:20:15.650
WH11NE- Sunrise: And since we've factorized the way in which you're doing the compute way uh or factorize with uh, the method by which you're doing your compute.

101
00:20:15.660 --> 00:20:28.109
WH11NE- Sunrise: That means that the code that you tend to write has much more to do with the physics. Um, and the analysis rather than trying to manage uh doing that analysis. So

102
00:20:29.590 --> 00:20:31.200
WH11NE- Sunrise: um

103
00:20:31.260 --> 00:20:50.809
WH11NE- Sunrise: on top of that for all of this. Uh, we try to keep fairly well maintained documentation. Um, and we try to get that in multiple forms. So we have. Uh, you know, your basic documentation website. We also try to give examples by two for notebooks that you can uh click through if you go to the url that you see up here.

104
00:20:50.820 --> 00:20:56.029
WH11NE- Sunrise: Um, and we also are starting to see a fair amount of uh

105
00:20:56.500 --> 00:21:09.660
WH11NE- Sunrise: excuse me, a fair amount of adoption by a different analysis groups uh somewhere over sixty-five direct forks, and I think uh, somewhere in the neighborhood of like fifty to one hundred maybe a little bit more users.

106
00:21:09.670 --> 00:21:28.859
WH11NE- Sunrise: Um! And we try to maintain a largely uh standard open source uh core plus community supported model as things are right now. So uh, if people talk, or as we're able to, with people talk to us, we try to make sure that we address their needs. We try to make sure that we expand functionality to see what people want.

107
00:21:28.880 --> 00:21:34.110
WH11NE- Sunrise: Um, and we try to have discussions about how we want to get analysis done in the fish. But

108
00:21:34.370 --> 00:21:53.089
WH11NE- Sunrise: uh, probably most important from a practical perspective, is, uh, one of the main things that we bring in. Coffee is actually a a a completely covering set of corrections uh that you can apply to your data, including the entire get energy direction. Stack,

109
00:21:53.110 --> 00:22:03.050
WH11NE- Sunrise: um, And we've tried to figure out where the good cut off for automation, and that is, you Can you can see an example for using the tagging scale factors?

110
00:22:03.130 --> 00:22:20.760
WH11NE- Sunrise: Um, that's uh or where it's been made such that the calling it uh, or call, or trying to apply or be tagging scale Factors is uh easy as a function call, and you just have to make sure your call or you're asking for the right uh right kind of correction to apply to your data.

111
00:22:20.810 --> 00:22:36.289
WH11NE- Sunrise: So this helps you, of course. Then organize what you're doing in your analysis, um, and keeps you thinking about the physics that you want to do rather than wrangling uh, uh, renewing you another piece of metadata for your analysis. In this case the the tagging, directing scale.

112
00:22:36.480 --> 00:22:45.569
WH11NE- Sunrise: Um, yeah. And on top of that uh, right, we do more or less the same thing for the get interview corrections uh, And the systematics related to that.

113
00:22:45.990 --> 00:22:59.200
WH11NE- Sunrise: Uh, another thing that essentially comes from using awkward directly, it's actually a very straightforward uh use of other our use of uh machine learning packages. And this comes from the fact that, uh,

114
00:22:59.210 --> 00:23:27.949
WH11NE- Sunrise: within the python uh, within the Python ecosystem, the way to address and describe. Going through data uh that you have laid on in memory has largely been agreed upon to be like, uh uh be like that of numpy. So you have some uh big region of data inside of uh, the memory of your computer that you want to access, and you access it through a common language that people have uh defined over the years through a square brackets on an array.

115
00:23:28.500 --> 00:23:47.110
WH11NE- Sunrise: And even though this is a bit of a wordy one line here. Uh, you can go from some data that you have into a Pi torch model and back out and start using that on, or using that immediately in your analysis, in the shape uh of the objects that you have per event

116
00:23:47.120 --> 00:23:56.559
WH11NE- Sunrise: uh, just by passing it through uh the high torch model directly, and then turning it. In this case, what this is doing is It's turning it back into the shape of the uh

117
00:23:56.570 --> 00:24:23.700
WH11NE- Sunrise: uh, the event life shape of all the objects that you wanted to evaluate this model on. So this is taking this uh input object in this case could be nuance electrons, whatever. Um! And then you're passing in through the model, turning it back into the event Oriented view of all of that data. And then you're asking it to. Uh, take the soft backs of that, so that you can find the highest probability, like the highest score you on inside the event that you want to use in order to perform your analysis, for instance,

118
00:24:23.840 --> 00:24:26.679
WH11NE- Sunrise: Um, and because it's using

119
00:24:26.790 --> 00:24:37.699
WH11NE- Sunrise: the same, or a awkward array. In this case it's using the same scripting uh or sorry zoom subscripting as you would in as you wouldn't by torture tensorflow.

120
00:24:37.790 --> 00:24:51.700
WH11NE- Sunrise: Uh, then it makes it immediately interoperable with all these, which is obviously. Uh it gets you gets here using those tools faster and also makes the connection between your data and what the model is doing more clear.

121
00:24:53.830 --> 00:25:10.170
WH11NE- Sunrise: Okay, So uh, this is where I wanted to sort of uh. So I I think with that we've got an overview of what coffee does uh, so we can talk about that at least uh from a conceptual standpoint, and I can talk to you. You can talk to me, and we can have discussion about these things.

122
00:25:10.270 --> 00:25:14.360
WH11NE- Sunrise: Um. And so what I wanted to talk about first

123
00:25:14.630 --> 00:25:19.640
WH11NE- Sunrise: in general is, uh why the change from a computational perspective?

124
00:25:19.890 --> 00:25:22.690
WH11NE- Sunrise: Um! And I think this has been,

125
00:25:22.720 --> 00:25:31.919
WH11NE- Sunrise: or we. We've been talking about this one for a long time, but all modern Cpus have a vector processors, and you can see the difference between

126
00:25:31.930 --> 00:25:45.989
WH11NE- Sunrise: uh a scalar process and a vector process in the left and right of this diagram down here, and you can see this is almost exactly the same as the difference between event, wise operation and uh doing column or operation.

127
00:25:46.190 --> 00:25:49.550
WH11NE- Sunrise: And i'm sorry i'm doing a call in your operation,

128
00:25:49.770 --> 00:26:02.940
WH11NE- Sunrise: and what the uh vector operation over here, also called single Instruction, with the data operations doing is that with the same clock cycle you can execute uh,

129
00:26:03.160 --> 00:26:22.930
WH11NE- Sunrise: on multiple pieces of data, the same operation uh, so that you can export so that you can turn through more pieces of data in the same unit of time, because you're using uh, less or so you you. You're having to issue fewer instructions in order to perform the same number of operations. So this lets your process

130
00:26:23.000 --> 00:26:29.939
WH11NE- Sunrise: uh do more things in parallel and hits to you. It looks like It's going faster from the uh

131
00:26:30.000 --> 00:26:41.420
WH11NE- Sunrise: uh, or going faster in terms of data processing. So if you were gonna um. If you organize uh the way that you're accessing memory inside of your analysis

132
00:26:41.680 --> 00:26:57.689
WH11NE- Sunrise: such that it's laid out uh in a way that the processor can. The compiler and the processor can see that it can do one of these vector operations instead of a scalar operation. Then you can uh actually make use of this functionality inside of the processing.

133
00:26:57.700 --> 00:27:05.179
WH11NE- Sunrise: And as a result, people try to or or try to make it so that it's very easy to organize data in this way.

134
00:27:05.230 --> 00:27:15.429
WH11NE- Sunrise: Uh, and both awkward array and our data frame uh do their best to organize this data in such a way, so that the processors can most efficiently ingested

135
00:27:15.440 --> 00:27:34.689
WH11NE- Sunrise: Um, and use all of these vector instructions as as as completely as possible; and uh modern compilers by themselves are actually pretty good at it. But uh, way back in the early days of this it was a very, very Bo. Some people have been thinking more and more. How do you get the data uh through, or get more data through the processor?

136
00:27:34.700 --> 00:27:38.530
WH11NE- Sunrise: Uh, you see. Uh, in a way that's easier for the end. User

137
00:27:38.570 --> 00:27:54.410
WH11NE- Sunrise: Um. So this is. This is one reason why they use these more modern tools is that uh, they've they're actually a a lot of thought and uh going into making it so that this mapping can always occur in a very easy way,

138
00:27:54.420 --> 00:28:18.420
WH11NE- Sunrise: and so that you're actually making better use of the processor uh without you having to spend so much time figuring out how to uh access, or figuring out how to routinely access those instructions inside of the processor. So it's abstracting away. You needing to think about, uh, all of all of this computing, uh And instead, of course, you can focus on uh actually doing your

139
00:28:18.430 --> 00:28:33.459
WH11NE- Sunrise: um. And the curiosity of me. And this, of course, is that the same pattern uh going from a scale and operation to a vector operation. It's exactly the same as uh or is is really the fundamental uh operating pattern of you to use as well.

140
00:28:33.470 --> 00:28:38.969
WH11NE- Sunrise: There have been some explorations into how you can use

141
00:28:39.170 --> 00:28:44.069
WH11NE- Sunrise: uh, though, or use numpy and awkward array or things in it,

142
00:28:44.210 --> 00:29:13.109
WH11NE- Sunrise: in order to uh go from using a Cpu to Gpu and get even more throughput uh in analysis code without changing anything practically at all. Because the what? Because all you're doing at the analysis, all is describing the transformations that you want to do to your data. And then you're at that point. You're uh conceptually very far away from talking about what kind of compute platform. Your uh analysis is actually executing on, and

143
00:29:13.120 --> 00:29:28.459
WH11NE- Sunrise: then you can start talking about using accelerators in an easy way, so that you can uh or so that your turnaround and find uh time to making any sort of insight on your data is significantly reduced. Um! So I I

144
00:29:28.470 --> 00:29:38.630
WH11NE- Sunrise: I guess with this i'd like to uh open. Yeah, open it up for people to. Uh, just ask any questions you have at all, and there's four more slides of this. So um

145
00:29:38.640 --> 00:29:54.169
WH11NE- Sunrise: if we want to go through all of those, and then go back and then remediate to them. Uh, we can go through all of them now or uh, and then come back to where people have questions, or we can go through, slide by, slide, and see if people have questions. This is the only technical one. The rest are actually a bit more uh sociological.

146
00:29:55.850 --> 00:30:00.200
WH11NE- Sunrise: So do you want me to keep going, or uh? And then we can come back, or do you want to?

147
00:30:00.630 --> 00:30:15.499
WH11NE- Sunrise: Uh? Does anyone have a question right now? Anyone out there new? Oh, hey? Stuff on? Yeah, hey? Can you hear me? Yeah, Okay, I I was looking at this, and I was thinking uh about

148
00:30:15.510 --> 00:30:22.019
Stefan Piperov: quite specific case of particle physics where things are organized by events.

149
00:30:22.250 --> 00:30:33.999
Stefan Piperov: And uh, I mean this this is: we have this trivial parallelism in particle physics, right? Just because things are organized better than we can split them in and process them in parallel.

150
00:30:34.460 --> 00:30:49.980
Stefan Piperov: Uh. But the point is this: So, looking at this nice slide, you you're saying yes, instead of doing the operation four times taking the a of the first event and the B, and producing the C. And then repeat, We We just take all four of them, and you do do it in once.

151
00:30:50.000 --> 00:30:51.210
Stefan Piperov: But

152
00:30:51.290 --> 00:30:56.149
Stefan Piperov: this implies all that, all the A's already being in the memory of the processor.

153
00:30:56.310 --> 00:31:04.780
Stefan Piperov: And this is my question. This is where my question is going so even that we operate on thousands and millions of events.

154
00:31:04.980 --> 00:31:24.220
Stefan Piperov: Now, Isn't, it becoming a challenge just containing all of those A's and B's in memory first in order to apply this very fast operation, isn't it the gain from quick addition completely wiped out by the fact that we have to go through the input file

155
00:31:24.230 --> 00:31:30.539
Stefan Piperov: once or maybe twice. It depends how it is organized and just fill this arrays. First of all,

156
00:31:30.590 --> 00:31:34.710
WH11NE- Sunrise: uh, it looks like, uh, Jim already has a a comment there in.

157
00:31:35.430 --> 00:31:40.130
Jim Pivarski: Yeah, I I wanted to point out. This is a good question. This is, uh,

158
00:31:40.290 --> 00:31:51.289
Jim Pivarski: uh, yeah, this this has. This is an issue. This is a thing that uh, that you always have to think about with, uh, uh column or processing

159
00:31:51.360 --> 00:31:56.390
Jim Pivarski: um, and they the the solution to it is chunking.

160
00:31:56.860 --> 00:32:04.479
Jim Pivarski: So. Um really what we're talking about here. We're just sort of generalizing the whole problem with, uh

161
00:32:04.530 --> 00:32:05.520
Jim Pivarski: uh

162
00:32:05.540 --> 00:32:09.370
Jim Pivarski: event by event, at one end of a scale, and

163
00:32:09.600 --> 00:32:13.180
Jim Pivarski: everything is in memory column or on the other end of the scale.

164
00:32:13.500 --> 00:32:27.069
Jim Pivarski: We're almost always seeing something in the middle, where we take some chumps of columns. So in other words, I guess, do both like uh for a's will fit into memory. But uh, like a million of them won't. Let's say,

165
00:32:27.440 --> 00:32:31.699
Jim Pivarski: um. So you take the largest block that will fit into memory.

166
00:32:32.460 --> 00:32:40.620
Jim Pivarski: So uh So there's a chunking scale where we're Event by event is just Colin, or processing with chunk scale of one.

167
00:32:41.210 --> 00:32:46.219
Jim Pivarski: And so all we're saying, Here is chunk size. One is too small. We can make the chunk size larger.

168
00:32:46.940 --> 00:32:52.100
Jim Pivarski: Um, and uh, until you know you're at the limits of memory.

169
00:32:52.640 --> 00:32:59.789
WH11NE- Sunrise: That's a good answer, indeed! Actually a a slightly different perspective on that where it's uh

170
00:33:00.380 --> 00:33:09.800
WH11NE- Sunrise: uh coming coming to the point of uh, how how do you get the data into the process, or most most efficiently? And uh

171
00:33:10.480 --> 00:33:20.469
WH11NE- Sunrise: try uh, because not only do you have to worry about how much you know how how many A's and B's you can get into the primary memory of the uh of the system.

172
00:33:20.480 --> 00:33:38.110
WH11NE- Sunrise: You have to worry about how that is being loaded into the uh on time, memory on the processor uh, which is then in a couple of different tiered stages as you get closer and closer to actually performing this operation in the processor. Uh, these are the the caches that you're here

173
00:33:38.120 --> 00:33:42.789
WH11NE- Sunrise: uh here, up inside of a processor, maybe every now and then. And

174
00:33:42.890 --> 00:34:02.859
WH11NE- Sunrise: uh, yeah, it's uh one of the main things to try to solve in order to get really the maximum throughput is not only, you know, finding what's the What's the best chumping size, as Jim was saying, but then also understanding how to organize the data processing so that you're not constantly trying to, uh,

175
00:34:02.990 --> 00:34:15.949
WH11NE- Sunrise: for instance. So let's say you have a another call in the data. That's the uh. So uh move in from adding a is be used to maybe season these uh you want to organize it so that you are um

176
00:34:16.000 --> 00:34:34.540
WH11NE- Sunrise: uh making sure that you're always grabbing data that is closest to the processor the most often. Uh, because that means that you're spending less time searching through them. Uh the primary system memory of the computer, which is really really slow compared to what you can access when you're You're literally next to

177
00:34:34.550 --> 00:34:49.790
WH11NE- Sunrise: uh for I'm: sorry uh uh when you're in on this on the chip memory uh running at the speed of the processor next to all of the uh uh, next to the instruction cache, and all of the pieces of circuitry that actually

178
00:34:49.800 --> 00:35:09.910
WH11NE- Sunrise: um, as opposed to saying, Oh, I don't have this piece of data. I need to first search through uh what might be on the processor, then search through, uh, or then search through what's in the ram in order to go and get that. Replace the data that's on the processor, and then continue on with my computation.

179
00:35:09.920 --> 00:35:25.640
WH11NE- Sunrise: So you have to uh a lot of these systems, including Rdf and the uh Rdf and the awkward array uh both spend some time to help you organize um making those transfers of Beta just within the computer far more efficient.

180
00:35:25.710 --> 00:35:47.550
WH11NE- Sunrise: Um so, and that is something that you did have to mind back in the day. It's very easy to um write a raw piece of C code that can uh be very, very slow, just because you're uh thrashing, or you're sorry you're causing the cache to load and unload little stripes of memory all the time as opposed to loading in a block of data,

181
00:35:47.560 --> 00:35:55.030
WH11NE- Sunrise: going through that as quickly as you can, and then moving on to the next one, which is usually the most efficient pattern for working on these things.

182
00:35:56.250 --> 00:36:15.049
WH11NE- Sunrise: So there's there's also all this. Uh, I mean, I I guess, uh to put it in the context of what General is saying. There's a Not only is is there this block of the chunk in order to just get it in memory on your local computer. But there's a a series of blocks below that that need to be uh in terms of uh

183
00:36:15.060 --> 00:36:19.539
WH11NE- Sunrise: strata of memory that need to be organized directly to really get the through what you want,

184
00:36:19.870 --> 00:36:26.269
WH11NE- Sunrise: and a lot of these frameworks are uh doing what they can to make that easy uh, so that you don't have to think about it.

185
00:36:27.940 --> 00:36:28.919
WH11NE- Sunrise: Got it?

186
00:36:30.280 --> 00:36:50.869
Josh Bendavid: Yeah. So since you sort of brought it up, I I wonder if if there are any benchmarks in in a hep context. Uh with the three Dv cache uh processors uh with, you know, super mega l. Three caches, which which you know if your workflow benefits from it. It can benefit from it a lot. But I I don't have a good feel whether ours does or not.

187
00:36:50.880 --> 00:36:55.589
WH11NE- Sunrise: Uh, if you don't know about it. I think that the

188
00:36:56.980 --> 00:37:03.819
Josh Bendavid: fair fair enough I I I'll have to find one and try it.

189
00:37:04.910 --> 00:37:21.020
WH11NE- Sunrise: Uh yes, so no, I have not heard of anything like that. I know that. Uh, this becomes immediately interesting with the uh, the new Grace Hopper. Cpu: So uh coming out of Nvidia. Uh, just because you do have all this high bandwidth practically level three cache

190
00:37:21.030 --> 00:37:39.430
WH11NE- Sunrise: uh just sitting next to a Gpu and a Cpu, and organizing all of that effectively. Uh, is the difference between using that processor well at all, and just having something that's kind of Monday uh, and this is like orders of magnitude difference in performance. Um, in terms of how much data you can jump through.

191
00:37:40.140 --> 00:37:41.569
WH11NE- Sunrise: Um,

192
00:37:41.650 --> 00:37:49.760
WH11NE- Sunrise: Maybe as an anecdote along this lines, we have this kuda uh training. What if you

193
00:37:50.090 --> 00:38:08.650
WH11NE- Sunrise: yeah, at the end of a of August and one of the over action teams with the training was how hard it is to get the data to the chorus, so they can do work computing powers. And that's and it's keep you use. But you just can't get the date to the fast,

194
00:38:08.860 --> 00:38:13.489
WH11NE- Sunrise: really, unless it's very simply parallel with that.

195
00:38:13.530 --> 00:38:21.029
WH11NE- Sunrise: Any even remotely difficult to.

196
00:38:21.280 --> 00:38:40.180
WH11NE- Sunrise: Yeah uh, in particular, like dealing with the if statements inside of Gpu code and branching is, uh, really, really nasty, and if you want to do it effectively, you have to kind of rewrite your right. Why are your model for how you think uh coding should be done in order to fit the hardware,

197
00:38:40.190 --> 00:38:47.219
WH11NE- Sunrise: And that's why building up these libraries is really important, because a lot of that can be abstracted away from the user um.

198
00:38:48.050 --> 00:39:01.960
WH11NE- Sunrise: And uh, yeah, you could very easily spend way too much time thinking about how to write your code on a Gpu or some other uh some other parallel processor as opposed to, you know, just getting your fonts out.

199
00:39:04.950 --> 00:39:08.109
WH11NE- Sunrise: Okay, yo uh John. Yes,

200
00:39:08.340 --> 00:39:16.670
John Hakala: uh, You mentioned briefly, that modern compilers are getting more clever at uh using these vector instructions,

201
00:39:16.700 --> 00:39:19.120
John Hakala: Do you think it's possible? Uh,

202
00:39:19.530 --> 00:39:20.660
John Hakala: or

203
00:39:20.860 --> 00:39:28.270
John Hakala: if does it already happen that you could write, say, a naive event loop like you showed earlier, and the compiler

204
00:39:28.280 --> 00:39:48.060
WH11NE- Sunrise: takes care of factorizing it without having to. Most of them can. Yeah, Yeah. So the answer is yes and uh, so long as you turn on the optimization flag, So if they don't have a a default, the high level of optimization set uh they're usually pretty good at optimizing things away um,

205
00:39:48.420 --> 00:40:15.640
WH11NE- Sunrise: and like it, like if you just stick in a a a a simple for loop over some data it will know to use the appropriate with the vector instruction in order to go over that piece of data. Uh, you know, four or eight uh doubles that it uh doubles at a time, depending on what processor you're on uh like Gcc. And Clay for sure, have all of this complexity for analysis of the programs that they're compiling built into.

206
00:40:15.650 --> 00:40:19.039
WH11NE- Sunrise: So there's a caveat right? Yes,

207
00:40:19.050 --> 00:40:43.240
WH11NE- Sunrise: um! If you put any branching in there, I think it'll fall flat. There are cases where it can figure it out. But yeah, most of the time, if you put in uh even a uh, well greater than ten. Yeah, because it's yeah, even if it's just bt greater than ten. If it's a a random variable that it can't very well, or that's you know from some other piece of data

208
00:40:43.250 --> 00:40:48.970
WH11NE- Sunrise: uh that I can't very well predict from looking at the rest of the code. Uh, then it will not vectorize it,

209
00:40:49.080 --> 00:40:51.819
WH11NE- Sunrise: and

210
00:40:53.220 --> 00:41:00.540
WH11NE- Sunrise: you have to keep a mask alongside that right? It doesn't know how to organize the memory access in the core,

211
00:41:01.370 --> 00:41:06.870
and that's why you can't do it, because, like at a hardware level, it just cannot describe the thing you want to do.

212
00:41:06.880 --> 00:41:22.869
WH11NE- Sunrise: That's what I am using when it's almost cheaper, and call and stuff to compute the mask, and then keep the mask for late, and it's cheaper to compute more values and to skip sometimes just because of the way data flows in and out of the process.

213
00:41:22.900 --> 00:41:28.000
WH11NE- Sunrise: So the the hardware matters a lot, and how you're organizing all of this. And this is why it makes

214
00:41:28.310 --> 00:41:37.970
WH11NE- Sunrise: uh for this. This is what makes it cheaper to uh do more wasteful processing, which is actually largely what uh, what I call in our analysis is doing. And

215
00:41:37.980 --> 00:41:58.629
WH11NE- Sunrise: uh, I think even or yeah, uh, essentially, they want to say, was, It sounds bad. It's you gotta fit the processing to the tool that you have. Yeah, it's doing something like placing the card.

216
00:42:07.940 --> 00:42:20.050
WH11NE- Sunrise: So in terms of making all of these uh conditional choices and like how you're processing the data uh it. It is kind of unique to science as a whole, for sure. But if you consider, uh,

217
00:42:20.110 --> 00:42:41.180
WH11NE- Sunrise: most of like banking and machine learning and things like that that actually have way huge, or their budgets are way larger than ours, and they do more computing. Uh, if you sum over those entire industries like they consider all of Facebook or something like that. Usually they are just going through the data as fast as they can in order to make some inference, and there's some costs.

218
00:42:41.190 --> 00:42:48.540
WH11NE- Sunrise: Um. So it is much more important for them to just process as much as possible as uh, yeah, as much as quickly as possible.

219
00:42:48.970 --> 00:42:49.919
That's right.

220
00:42:49.930 --> 00:43:09.269
WH11NE- Sunrise: I mean as a as a thought experiment. Try, think of like geospatial information, like if you wanted to specify one city in the United States. How many, if statements do you have to place in order to specify one city where you know when we, when we place a lot of cuts like, say, just building an invariant mass of some cleaned up object.

221
00:43:09.280 --> 00:43:14.530
WH11NE- Sunrise: Right? We we're like we want a pair of objects we want. You know. We want those to be

222
00:43:14.890 --> 00:43:24.680
WH11NE- Sunrise: um high Pt: We want those in a certain region in our detector There's a lot of these branching statements. Yeah, and there's not so many if you want to. Just

223
00:43:24.990 --> 00:43:26.120
WH11NE- Sunrise: pretty much

224
00:43:26.250 --> 00:43:30.620
WH11NE- Sunrise: uh thanks. And uh, Josh, you And then we have to go on to the other slides.

225
00:43:30.680 --> 00:43:43.510
Josh Bendavid: Yeah, no. I just wanted to say that a another thing with which actually very commonly breaks vectorization in our in our event, loops is polymorphism. So, to use a Cms specific example. If you have a loop over rico particles,

226
00:43:43.520 --> 00:44:01.190
Josh Bendavid: and you know some of them are electrons, and some of them are muons. There's a hidden if statement there, and that also breaks vectorization. So I think what what one of the important things that the modern frameworks do is they sort of force you to organize your data access in a way which doesn't do that, that you're looping over like like data structures.

227
00:44:01.270 --> 00:44:04.709
WH11NE- Sunrise: Exactly. Yeah, it. It It uh

228
00:44:04.850 --> 00:44:09.629
WH11NE- Sunrise: it suggests very heavily how you should organize your process.

229
00:44:10.130 --> 00:44:12.060
WH11NE- Sunrise: Okay, uh,

230
00:44:12.720 --> 00:44:17.780
WH11NE- Sunrise: right? So the other ones, like I said, are a bit more sociological. Um, and

231
00:44:17.950 --> 00:44:36.449
WH11NE- Sunrise: it's kind of to the point that, uh you as as users, it's really really beneficial. If you start uh thinking about the tools that you want in a very critical way. Um. So taking your analysis flow, and not only making sure that it works, but

232
00:44:36.970 --> 00:44:39.029
WH11NE- Sunrise: taking the time to

233
00:44:39.250 --> 00:44:58.520
WH11NE- Sunrise: uh understand, if it works like you really want it to, and if you think you can get more out of it like if something is, I know this is taking time away from science. But if you, you know, find some inefficiency that for you is taking a lot of time, and you fix it, then of course, you can eventually do more so. So this is an investment kind of thing.

234
00:44:58.530 --> 00:45:12.069
WH11NE- Sunrise: Um. And this is actually quite well summarized in the presentation that Nick sent to me today about the culture around the user centric design and nuclear physics. Um, So there's

235
00:45:12.740 --> 00:45:25.489
WH11NE- Sunrise: toxic uh workshops about this now, which is kinda cool. Um, And I think it's worth reading through that presentation, and we're sort of touching on some of the edges of it here. Um!

236
00:45:25.710 --> 00:45:39.700
WH11NE- Sunrise: And I think the gist of the presentation is that this really requires, uh a different mindset from how we tend to work, which is very much uh i'm going to bang on this with the hammer until I get my plots out. And

237
00:45:39.710 --> 00:45:58.029
WH11NE- Sunrise: uh, just taking the time to say, Okay, uh, I've even, you know, after the first iteration I've done this once. Is there anything that I can do to make this usefully better for me? Uh, what did I not like while I was writing my analysis? What the what? To what,

238
00:45:58.040 --> 00:46:05.400
WH11NE- Sunrise: what took too much time, and asking that in the rational way, instead of saying, Oh, God! The whole thing just took too much time. What am I doing with my life?

239
00:46:05.440 --> 00:46:11.289
WH11NE- Sunrise: Uh, but you know, trying to take it apart and treat it critically, and figure out what you could possibly improve

240
00:46:11.410 --> 00:46:12.819
WH11NE- Sunrise: um,

241
00:46:12.870 --> 00:46:41.669
WH11NE- Sunrise: and kind of uh yeah, like like I was just saying hastily, declaring things aren't helpful uh uh or things not to work isn't really helpful. Um! And we need to kind of expand uh the scope of what we think of getting the science done to more than just the script. I know a lot of people do this to some extent already. But I think we need to do this more, and have more conversations about how we're writing code in order to do the science, so that we can figure out what all the common patterns really are,

242
00:46:41.680 --> 00:46:59.850
WH11NE- Sunrise: and put it into, uh, even more abstract libraries from awkward array uh on on top of it, or or next to it, helping you distribute your processing. Describe really complex concepts and physics. Um in software libraries, so that we don't have to implement it over and over again, et cetera.

243
00:46:59.860 --> 00:47:12.679
WH11NE- Sunrise: Um. So you know. Uh, if you're thinking about things like this, and if I have the time uh, try things out. See if it improves your situation, either from a quality of life, perspective, a performance, perspective, et cetera.

244
00:47:12.690 --> 00:47:20.940
WH11NE- Sunrise: And if it does share it like, Have a conversation about what uh, what sort of thing you brought into your own software that you think was really useful.

245
00:47:20.990 --> 00:47:32.110
WH11NE- Sunrise: Um. And then, if it uh if it really works out and it wasn't just a statistical fluctuation uh that changing something improved your life uh talk to other people about it.

246
00:47:32.680 --> 00:47:42.519
WH11NE- Sunrise: Um, because you know, at the end of the day, siloing knowledge uh, because of some perceived budget for yourself, especially in a collaboration, is not so good. So just a good citizen.

247
00:47:42.560 --> 00:47:56.779
WH11NE- Sunrise: Um. And you know there's folks like Nick and uh, there's Josh, the folks in the route team, et cetera, that have a lot of perspective on this, and you can talk to him about it, and they're generally very happy to talk about their work. Um,

248
00:47:56.790 --> 00:48:08.060
WH11NE- Sunrise: especially if you're saying, hey, I can do something better, and I think we can, you know, expand the scope of what we're doing here and help more people do more science instead of thinking about how they're coding or lamenting it.

249
00:48:08.840 --> 00:48:17.860
WH11NE- Sunrise: Um! And i'll just go through these, and then we can have a later discussion uh another point that's actually useful to bring up nowadays. Uh

250
00:48:17.920 --> 00:48:31.510
WH11NE- Sunrise: is professional development, and how we how we enter, or how how we prepare students post docs, uh and uh, everyone else, even, you know older people looking to make a career jump or something like that.

251
00:48:31.520 --> 00:48:43.500
WH11NE- Sunrise: Uh, how do we make sure that they are ready for this wider field data science that now we are a subset of, we are not. We're not the head hot, chosen data, science and like this. Just look at Facebook and Google.

252
00:48:43.690 --> 00:48:45.229
WH11NE- Sunrise: Um.

253
00:48:45.260 --> 00:48:53.879
WH11NE- Sunrise: And uh, we need to be a little bit more real about the fact that the endpoint for the majority of the people. That train is not a professorship.

254
00:48:53.890 --> 00:49:06.690
WH11NE- Sunrise: Uh, there's all sorts of ancillary stuff around, that is true. Um, but there's a fair number of people that leave for industry, and it's useful to talk about if we're being nice to them as well as to our closed community.

255
00:49:07.150 --> 00:49:08.549
WH11NE- Sunrise: Um

256
00:49:09.070 --> 00:49:24.999
WH11NE- Sunrise: and yeah uh, I think it's useful to kind of, you know. Take a step back and say, Oh, wait right. We're social data, science, um! And because of that, to me at least it's useful to speak about your data and the transformations you make on it

257
00:49:25.430 --> 00:49:45.359
WH11NE- Sunrise: in the same language and concepts as other fields of data. Science. Um. So not only does this give it so. First and foremost, of course, gives you a common language, but it means that you can use that language to draw upon the innovation of a much larger field of people who are trying to solve similar problems.

258
00:49:45.370 --> 00:50:05.310
WH11NE- Sunrise: Um! And then on the other side of this, like. Imagine you're you're out that you're in an interview anywhere. Um, this if you speak the same language, for instance, in this case, not by brackets uh which is what awkward array uses in the site, your extracted sense, but otherwise it comes down to the same rule. So people know what you're talking about. If you write a statement

259
00:50:05.510 --> 00:50:27.979
WH11NE- Sunrise: uh it allows you to really concisely demonstrate what you're thinking about solving problem during the interview, like situation, for instance. So you don't have to go through writing line by line as statements. You can say. I want to transform the the data this way so that I can do the following algorithms to it: zoom in a number of clusters, and then uh, uh, and then draw some conclusion about whatever data you get.

260
00:50:28.130 --> 00:50:34.709
WH11NE- Sunrise: So that allows you to walk out very concisely. Exactly what you mean to say when you're trying to answer someone's question.

261
00:50:34.910 --> 00:50:54.289
WH11NE- Sunrise: Um, And then, yeah, there's other corollary to that. So, uh tying all this together, Why is it good to be an early a doctor with these kinds of tools? Um, you know. Of course it's nice to go fast. Uh, It's good to get your uh analysis done more quickly and more efficiently on the compute that you have,

262
00:50:54.300 --> 00:51:02.579
WH11NE- Sunrise: uh, and relying on other people to help you organize all the pieces and parts of your analysis in order to do that helps you think about science more often.

263
00:51:03.010 --> 00:51:19.249
WH11NE- Sunrise: Um, and there's all. There are large blocks and pieces of parts of what we do that are fairly uniform across all of uh, all the analysis that we perform. We're all farming uh farming out grid jobs. We're all processing massive uh

264
00:51:19.260 --> 00:51:24.720
WH11NE- Sunrise: massive numbers of events organized. And I know these these days. Um.

265
00:51:25.220 --> 00:51:26.479
WH11NE- Sunrise: So

266
00:51:27.310 --> 00:51:41.409
WH11NE- Sunrise: uh, yeah, you can use the fact that other people have been thinking about the architectures of this and plug into that, and be part of that ecosystem. Uh, by, you know, thinking more critically about how you're designing your own analysis and talking to more people.

267
00:51:41.420 --> 00:51:55.490
WH11NE- Sunrise: Um! And this lets you at the end of the day. Shape the tools that you're going to use. So like the um, Nick and I definitely enjoy sitting down and talking to users. The root guys also sit down and talk to people. And uh,

268
00:51:55.890 --> 00:52:04.870
WH11NE- Sunrise: uh, take him for uh sorry taking design suggestions like I know Josh does this a lot. Um, but this helps us get

269
00:52:05.180 --> 00:52:21.430
WH11NE- Sunrise: concepts like uh uh trying to figure out more generally like where where automation is useful in our analysis, how much of it is needed at certain points. Um! How how close are like answering a really uh abstract question of

270
00:52:21.440 --> 00:52:29.179
WH11NE- Sunrise: how close can we get to uh, skip, or very straightforwardly, schematically defining an analysis, and then having it done

271
00:52:29.190 --> 00:52:56.830
WH11NE- Sunrise: Um, do we need that? Uh, how much introspect like answering questions like how much introspection that do we need into our analysis software in order to make sure that we're still doing science. Uh, there's lots of interesting, weird, fundamental questions in this that you can dig into. Once you start speaking uh starts taking the same languages and start uh, I'll start sharing your contract or start uh sharing among yourselves in terms of the things that you uh are trying to accomplish

272
00:52:57.040 --> 00:53:15.940
WH11NE- Sunrise: um. And then yeah, uh, finally, if we start, if we were to work this way a bit more um, it actually makes it easier to uh point out people's individual contributions like, uh you can come to or come to a project, and then you have a platform for showing up what you've done and trying to integrate into a wider community.

273
00:53:15.950 --> 00:53:32.140
WH11NE- Sunrise: Um, So all of these things, uh or yeah, and in particular, if you go to them earlier. Then you have a longer basis of relationship with that and that kind of, or those kinds of things sort of snowball. Uh. So all of those those last four slides together, I think,

274
00:53:32.220 --> 00:53:34.410
WH11NE- Sunrise: uh paint a fairly

275
00:53:34.580 --> 00:53:47.219
WH11NE- Sunrise: clear case in my mind. Why, getting into these getting into these more modern analysis. Frameworks is useful for people. Um! And with that i'll uh open it up for further discussion as to how we

276
00:53:47.300 --> 00:53:50.490
WH11NE- Sunrise: how we approach this sociologically. What do we?

277
00:53:50.800 --> 00:54:04.980
WH11NE- Sunrise: What do we really want to prepare people for? How do we balance all these different needs that we have with respect to training people to do data, analysis and technology, physics, and what that means for, uh, collectively designing software and making sure people get attributed for it to.

278
00:54:05.520 --> 00:54:06.870
WH11NE- Sunrise: So it's

279
00:54:06.920 --> 00:54:11.629
WH11NE- Sunrise: there was a a lot to talk about in this particular subject, I think

280
00:54:14.140 --> 00:54:17.119
WH11NE- Sunrise: maybe before we start the discussion.

281
00:54:17.430 --> 00:54:22.680
WH11NE- Sunrise: Oh, yeah, uh, So Nick and Andre uh

282
00:54:22.810 --> 00:54:32.470
WH11NE- Sunrise: run every other Monday. The uh coffee users meeting this week's was a cancelled due to lack of contribution. So, hey, come, come, talk to us if we're happy.

283
00:54:32.890 --> 00:54:34.419
WH11NE- Sunrise: Um,

284
00:54:34.760 --> 00:54:42.640
WH11NE- Sunrise: yeah contact, either uh Nick or Andre no back. And uh, they can uh help you get sloted up. Uh, even

285
00:54:42.970 --> 00:54:47.939
WH11NE- Sunrise: if you have something you want to talk about, or if you just want to like, come in and discuss

286
00:54:47.970 --> 00:54:59.739
WH11NE- Sunrise: uh, uh, come in, just come in and discuss something uh It'd be nice to have kind of a a structured tops on all of this. So we uh we look forward to more People come into that

287
00:55:12.880 --> 00:55:13.830
WH11NE- Sunrise: because I

288
00:55:13.940 --> 00:55:17.170
WH11NE- Sunrise: start um with regards to

289
00:55:18.380 --> 00:55:24.310
WH11NE- Sunrise: us being a sub component of data science, emerging industry.

290
00:55:24.960 --> 00:55:29.240
WH11NE- Sunrise: In this mornings uh nuclear physics computing

291
00:55:29.300 --> 00:55:32.480
WH11NE- Sunrise: workshop. There was a discussion about how

292
00:55:33.910 --> 00:55:40.350
WH11NE- Sunrise: people are saying to worry that the edge that physics had to say, You know, like I do, physics had to say. You know,

293
00:55:40.670 --> 00:55:48.009
WH11NE- Sunrise: pathway to the state of science being eroded by the fact that there are now, in most universities dedicated programs for that.

294
00:55:48.610 --> 00:55:52.589
WH11NE- Sunrise: So now

295
00:55:52.610 --> 00:55:54.810
WH11NE- Sunrise: historically learn this on the job,

296
00:55:54.980 --> 00:55:58.339
WH11NE- Sunrise: right awareness and degree programs

297
00:56:08.570 --> 00:56:10.330
WH11NE- Sunrise: something to think about

298
00:56:10.550 --> 00:56:26.650
WH11NE- Sunrise: or like, uh, just instead of having uh having everyone learn it on the job like we actually have uh miners and Phd programs and data science to formally train this kind of thing. My God, that would be pretty cool if someone showed up and had a higher and like Uh,

299
00:56:26.820 --> 00:56:43.059
WH11NE- Sunrise: it sounds really just in statistics. But okay, um. I came in with my applied statistics. There you go. That's a good name for Yeah, we actually Um, we get underground from the data science program.

300
00:56:43.070 --> 00:56:52.930
WH11NE- Sunrise: So it works both ways. You know. We send people into data science and

301
00:56:52.940 --> 00:57:04.479
WH11NE- Sunrise: one thing that I've seen, and I hope really mature is the fact that we do have original thoughts on how to approach certain statistics and modeling phones.

302
00:57:04.920 --> 00:57:08.920
WH11NE- Sunrise: Um! And it would be nice if the rest of the industry took some of our

303
00:57:09.100 --> 00:57:10.789
WH11NE- Sunrise: advances to hard

304
00:57:16.660 --> 00:57:24.009
WH11NE- Sunrise: just just in case of point. Um, and you know we're seeing this now with operator. It's been taken up by

305
00:57:24.030 --> 00:57:31.860
WH11NE- Sunrise: like anaconda. They are funding parts of it, and so, Jim, it's fairly popular in biology, or something like that. Right?

306
00:57:34.940 --> 00:57:41.479
Jim Pivarski: There is a of genetics project that is, uh adapting it.

307
00:57:49.370 --> 00:57:51.940
Jim Pivarski: Sure. Um. The

308
00:57:52.110 --> 00:57:55.940
Jim Pivarski: The particular problem that I know about is that

309
00:57:56.370 --> 00:57:57.669
Jim Pivarski: um

310
00:57:59.090 --> 00:58:00.250
Jim Pivarski: for

311
00:58:00.270 --> 00:58:07.440
Jim Pivarski: so it's gene data set um if you knew all of the um

312
00:58:07.780 --> 00:58:13.500
Jim Pivarski: alleles with certainty like if you know. When I did this, so it's it's um.

313
00:58:13.690 --> 00:58:14.689
Jim Pivarski: It's like

314
00:58:15.360 --> 00:58:30.429
Jim Pivarski: It's It's like three dimensional, because this number of people here, this the number of chromosomes here, and then something else. Uh, so it's like a bigger big array that's mostly rectangular. But then there's one thing which is like,

315
00:58:30.440 --> 00:58:39.050
Jim Pivarski: uh for each of those genes is this: uh variant a variant b variant, c. Um

316
00:58:39.200 --> 00:58:40.330
Jim Pivarski: uh

317
00:58:41.000 --> 00:58:56.900
Jim Pivarski: when you first measure the thing, you actually have likelihood distribution over a B and say chromosomes, Uh, there's a different number of possibilities. And so it's this big, mostly re rectangular array that is ragged, and only one dimension.

318
00:58:57.710 --> 00:59:03.930
Jim Pivarski: Uh. So that's kind of a minor usage of it. Um, but they do need

319
00:59:04.270 --> 00:59:07.830
Jim Pivarski: a ragged array mixed in with regular.

320
00:59:10.520 --> 00:59:14.730
Jim Pivarski: That's no other project provides so

321
00:59:15.470 --> 00:59:16.660
WH11NE- Sunrise: very cool.

322
00:59:18.170 --> 00:59:29.230
Jim Pivarski: They often flatten them. What they used to do is to just pick the most probable, Allele. And and just go with that. That's actually making the house is worse.

323
00:59:30.050 --> 00:59:33.210
WH11NE- Sunrise: Yeah, a moving variation.

324
00:59:33.440 --> 00:59:40.219
WH11NE- Sunrise: Okay, that's cool. The reasoning that I was thinking like, uh way back in the day, doing, Seen from sequencing and stuff

325
00:59:40.390 --> 00:59:58.249
WH11NE- Sunrise: Uh, you could get an enzyme to chop up the Dna that you wanted to do, sequencing up that uh coded to very specific uh sequences of uh nucleotides. And you'd get different links of just different links of uh some sub sub words in the Dna. So yeah, it's,

326
00:59:58.450 --> 01:00:11.399
WH11NE- Sunrise: it's fairly fundamental. Um. The fact that it's uh or because of the because of the chemistry, the biological chemistry that they are doing in order to get their data. It fundamentally is a an even length.

327
01:00:17.840 --> 01:00:19.370
WH11NE- Sunrise: I I

328
01:00:20.090 --> 01:00:23.849
WH11NE- Sunrise: I have thought a lot about what you were talking about with um

329
01:00:24.430 --> 01:00:25.910
WH11NE- Sunrise: training

330
01:00:30.920 --> 01:00:34.400
WH11NE- Sunrise: for a hundred people who are in a high energy physics program.

331
01:00:34.510 --> 01:00:39.759
WH11NE- Sunrise: Um, If some schools are taking this up, they're teaching

332
01:00:42.430 --> 01:00:45.680
WH11NE- Sunrise: they assigned in as it's programs.

333
01:00:45.750 --> 01:00:48.240
WH11NE- Sunrise: Um

334
01:00:48.460 --> 01:00:49.740
WH11NE- Sunrise: uh

335
01:00:50.470 --> 01:01:07.610
WH11NE- Sunrise: there to some extent in Buffalo. So i'm going to sign the University of Florida. But it's uh Princeton, but like of course, right. It's not a full program. It's very uneven. Some schools not at all right. And oftentimes the data science programs are either

336
01:01:07.620 --> 01:01:16.599
WH11NE- Sunrise: a separate department which you can take classes in, but it's it's more difficult. Oftentimes they're in a different school, which they have some new, bigger hurdle

337
01:01:16.670 --> 01:01:19.169
WH11NE- Sunrise: um to taking classes in that.

338
01:01:19.460 --> 01:01:20.870
WH11NE- Sunrise: Um.

339
01:01:21.250 --> 01:01:22.750
WH11NE- Sunrise: So

340
01:01:23.030 --> 01:01:25.710
WH11NE- Sunrise: I think the problem will just grow

341
01:01:26.010 --> 01:01:35.779
WH11NE- Sunrise: unless they're unless there is a real push among the faculty and and you to for and and universities to saying

342
01:01:35.820 --> 01:01:43.519
WH11NE- Sunrise: fundamentally, I think the the job tools needed to do experimental hybrid physics have changed.

343
01:01:45.460 --> 01:01:51.869
WH11NE- Sunrise: Yeah, and given our more the more typical way that you know students enter into

344
01:01:52.040 --> 01:01:58.660
WH11NE- Sunrise: uh experiment or yeah, experimental work in grad school is kind of by oral tradition, right? You'll uh inherit

345
01:01:58.800 --> 01:02:01.169
WH11NE- Sunrise: scripts long untouched

346
01:02:01.290 --> 01:02:21.270
WH11NE- Sunrise: in order to try to get your or you know at least bootstrap your analysis. So you're only ever getting information about the what, what the last guy did, instead of uh seeing the sum total of you know, everyone's different of of everyone's innovations of how they could possibly do the analysis. We we do have a really nasty siloing problem because of that,

347
01:02:21.540 --> 01:02:32.789
WH11NE- Sunrise: actually to put scheduled into laptop.

348
01:02:33.120 --> 01:02:50.110
WH11NE- Sunrise: You can't. You can't run it out of the box, And uh, it's it's got a million lines of code,

349
01:02:50.120 --> 01:02:59.500
WH11NE- Sunrise: the part of the project that a lot of people put as Oh, i'll get to this eventually, or after I write my pieces, or any never gets done so;

350
01:02:59.610 --> 01:03:19.840
WH11NE- Sunrise: and and and and documenting being in charge of that myself, I appreciate this a very hard thing to communicate with you Right Writing Good documentation is, in fact, quite difficult and very, very time, because you usually have to rewrite it a few ways. Do you want to like. Give all the all the examples, in addition to formal documentation, et cetera,

351
01:03:19.850 --> 01:03:32.000
WH11NE- Sunrise: as well as right it so it's approachable to you for help, Which, again, is, is this is the issue of accessibility. Well, let me add, one more thing is every time you make a a a change to interface, or

352
01:03:32.680 --> 01:03:44.399
WH11NE- Sunrise: some sort of, you know, some at some level, some functionality. You need to us. Take the read me now. I've seen most most of the time. There's no check against that. People of make. You know. It does do simple requests, and they forget that update to read me

353
01:03:44.410 --> 01:03:56.829
WH11NE- Sunrise: um, and then hopefully, it's out of date. Now I have seen some packages which are really fancy where it won't pass the Ci sh the test, unless there is a company to read me, or unless you override that,

354
01:03:57.430 --> 01:04:13.710
WH11NE- Sunrise: I know what most physicists are doing in that case. Sorry, I think just a simple fact of having an email address. It already helps a lot. Yeah,

355
01:04:14.830 --> 01:04:23.640
WH11NE- Sunrise: although we have to deal with, you know, people uh scattering to the wind and what not. In that case, uh, not always to his email address, to stay around forever.

356
01:04:26.420 --> 01:04:31.169
WH11NE- Sunrise: You can't catch them. All

357
01:04:31.830 --> 01:04:49.440
WH11NE- Sunrise: Containerization of analyses should help with that which is a slightly separate topic. Actually it intersects with this in the weird way it is the it makes things easier to repeat. So you can say, Look, this is this is how I think it should work, but it also overly promotes lazy. Now.

358
01:04:49.650 --> 01:05:02.059
WH11NE- Sunrise: Um, because people will take it and try, and they they will see that something works, and they will not be in. They will not be engaged by it to try to fix it, or anything like that, so it's a at least. To me

359
01:05:02.090 --> 01:05:04.869
WH11NE- Sunrise: it seems like it has the potential to. Uh,

360
01:05:07.000 --> 01:05:09.049
WH11NE- Sunrise: I would say, um, just

361
01:05:09.080 --> 01:05:16.029
WH11NE- Sunrise: make it so that people uh uh take take a container without really thinking about it. That's the only thing that I'm worrying about.

362
01:05:16.110 --> 01:05:30.429
WH11NE- Sunrise: I mean You're forced to do something new with it eventually. But it means that that time until you're actually grappling with the maybe the the details of how something is implemented in order to get the science you want to is a little bit longer it doesn't present uh

363
01:05:30.520 --> 01:05:35.339
WH11NE- Sunrise: it doesn't present the the real functionality that you care about very quickly,

364
01:05:36.070 --> 01:06:05.560
WH11NE- Sunrise: and I don't know if it's better to use people into that which is what this would promote. Or if it's better to just have that kind of in your face immediately. Well, there's always the danger you get to the point like Oh, I need to make this change to some fundamental piece of the code that's going to break this container right? And I have to do it a week before, or you know my slides are do or something. Yes, that's the risk, but on on the flip side the new person coming in and gets to see a working example which might not work like, Yeah, it only worked in Sl six. But we're we have to know. I still six notes,

365
01:06:06.010 --> 01:06:14.779
WH11NE- Sunrise: something like that. Yeah, no. I I see the absolute fundamental utility, and just having something that works in order to teach, by example, for sure.

366
01:06:15.350 --> 01:06:26.119
WH11NE- Sunrise: It doesn't have to literally be every single package any high energy businesses ever written. It's just They're gonna pass off your code. Make sure there is a persistent version.

367
01:06:26.400 --> 01:06:39.719
WH11NE- Sunrise: Yeah, and that's it. Is yet another whole presentation about analysis, preservation. The multitude of opinions that exist on the at the moment. Uh, they're all kind of in early stages, too. So it's a

368
01:06:39.960 --> 01:06:42.250
WH11NE- Sunrise: that's kind of a green field thing.

369
01:06:42.280 --> 01:06:49.200
WH11NE- Sunrise: Yeah, I I don't think it should be used for like literally every analysis. Just maybe container goes spam it up everywhere.

370
01:06:49.300 --> 01:07:06.699
WH11NE- Sunrise: Yeah, I mean I I it's to me. At least it should like be an artifact of your Phd. Or something like that. It will make a lot of sense to have that be part of what you publish. I also say it doesn't have to be from scratch.

371
01:07:06.890 --> 01:07:22.619
WH11NE- Sunrise: Are you talking about that data? And they're they're they're They're they're they're they're They're full like I'm not sure of papers, but for sure. Pop notes like a conference, whatever that Um,

372
01:07:22.630 --> 01:07:27.030
WH11NE- Sunrise: you know you you take the same.

373
01:07:27.120 --> 01:07:36.589
This is a requirement that it's published in a certain location like, Yeah. So Um:

374
01:07:36.600 --> 01:07:57.480
WH11NE- Sunrise: well, I know. I mean it. It was a It was a thing that I had to do under some amount of duress. And then we Okay, right? So so that there's a there's A. So you build the image and

375
01:07:57.490 --> 01:08:15.460
WH11NE- Sunrise: turn gitlap. It's it's it's there's uh Atlas provides like the um like a cms image. Um! And so you both on top of that um, and then you push it to the uh. There's a

376
01:08:15.470 --> 01:08:31.400
WH11NE- Sunrise: it's a docker repository, and you have you push it to a container with the same name as your caddy line, and it lives in the soccer of Uh no! In this there in the Cern dot car registry. Okay, I don't know exactly what it is, but it is public.

377
01:08:31.410 --> 01:08:46.060
WH11NE- Sunrise: I don't I if it's public or in timeline. I'm not sure but you get lab and start to get lab repository is private. You have to be okay, so I I wouldn't be surprised if it was

378
01:08:46.069 --> 01:09:00.820
WH11NE- Sunrise: Atlas internal right like that that you would use it to publish another atlas. Yeah, Yeah, exactly. Um. But it is like now, I think, required to publish an analysis.

379
01:09:00.830 --> 01:09:13.280
WH11NE- Sunrise: No, the The point is that the inputs are separate from the code, right that you should be able to. If you have like the same release, or whatever the same input platform you can put it through your

380
01:09:13.359 --> 01:09:26.199
WH11NE- Sunrise: code, and then it'll take you to. You Have your Monte Carlo sample right, or whatever you put it into the docker container, and out you get a number of So the docker container contains the input, data.

381
01:09:26.279 --> 01:09:45.400
WH11NE- Sunrise: No, it doesn't. It's not. No, but but it should compute your systematics right? So, like you, we computed it. Assume a certain version of the data, but the data, if you're going to run that container. The data is in the same location. It was when you create a

382
01:09:45.410 --> 01:09:58.560
WH11NE- Sunrise: you, you you give it it. So they they have they have a whole infrastructure around this? It's called Rihanna, supported by, and so they have it, the infrastructure for it, and a way to.

383
01:09:58.570 --> 01:10:25.619
WH11NE- Sunrise: Oh, no, No, I was just sending a message saying that folks outside need to go. They can. But you're there, too, and we definitely appreciate your input So there's there's a way they have. They have a format that you can feed it. Uh, so like I would run it. I had a test file on us States. I was just wondering if you have a data set. It's like it on certain, you know, somewhere right in the container works. It's fine. But let's say the data set disappears. Container no longer run really right.

384
01:10:25.680 --> 01:10:38.099
WH11NE- Sunrise: I think the idea is that there there's some there's some. There's some. There's some level above my analysis that the uh that the the the infrastructure that can make,

385
01:10:38.260 --> 01:10:48.399
WH11NE- Sunrise: like you know, input, files right? They can make the aod's will also be preserved to some level, right? So that if you want to reprocess your data and release Yeah, that

386
01:10:48.410 --> 01:11:18.290
WH11NE- Sunrise: and that's what My, That's what? My, that's what my code is based on, and you should be. I think they are connected with the preservation. They open data stuff, right? The Rihanna is also, you know. I get you go next. So the the people that outside of it um that are central. They're people from Atlas and C and that's it.

387
01:11:18.300 --> 01:11:26.380
WH11NE- Sunrise: Um, I do want to say. One thing is that it sounds like has a whole mechanism for doing this

388
01:11:26.410 --> 01:11:38.240
WH11NE- Sunrise: for people on Cms. You do not have to reinvent the wheel when creating an analysis container, the Atlas does it. We've built tools with the Lvc. There are other tools from other Cms people.

389
01:11:38.400 --> 01:11:43.309
WH11NE- Sunrise: There's a good way. There's a good way of building painters

390
01:11:43.540 --> 01:11:45.710
WH11NE- Sunrise: figured out the right way,

391
01:11:46.260 --> 01:11:59.100
WH11NE- Sunrise: and I think there is also a lot of security issues if you do it the bad way, and you don't want to have it fail on sites or get into trouble. So it's it's definitely something where it is not.

392
01:11:59.110 --> 01:12:16.310
WH11NE- Sunrise: I will say right that the people who care about this, now that it required they did like They posted the workshop a few times a year, and so like you knew that you had to like. Send a grad student to go, learn how to do the doctor, and then they would do it. And you know what I mean that

393
01:12:16.320 --> 01:12:34.749
WH11NE- Sunrise: I I've modeled the the the hats that I that I So So in any case, anybody out there doesn't know we have a Lpc. Um hats that has It's containers. It's they're

394
01:12:34.760 --> 01:12:51.220
WH11NE- Sunrise: but no no Pc. Script that all you have to do is, say, make container, and we'll make a container of your Cms. And you're like, Okay, We need to make that like more widely known out of the outside of the Lpc: That's kind of awesome

395
01:12:51.610 --> 01:13:19.389
WH11NE- Sunrise: like it. It's very just to choose. Okay, Yeah. But no, maybe with the fact that you have some that have and that's tools, we can. Yeah problem. Well, I don't have the had any more. Oh, you don't know. Okay, the time of the task force is over. Um! The now there's the Cat group, and that's Pierre Julio and uh Clements. I talk a lot about this. The Clemens at least that's heard about it.

396
01:13:19.400 --> 01:13:39.369
WH11NE- Sunrise: Um! Whether or not it's, I mean, obviously advertising is great. But to see this Yeah, no. Given the fact that Alice is already doing this routinely, and they just was it like, Uh, I think it was actually out of the Cms. Now that I remembering it, they were kind of. But there are separate works, because I think that um like they were like the the that it was about analysis, kind of region.

397
01:13:39.380 --> 01:13:49.499
WH11NE- Sunrise: And so there was like at least people.

398
01:13:49.510 --> 01:14:03.409
WH11NE- Sunrise: Um, because I can. I can see this being a requirements like certainly being an uphill battle within Cms. Uh.

399
01:14:03.420 --> 01:14:19.840
WH11NE- Sunrise: It's useful to well, just the scientific process as a whole, and just making well, I mean doing things right with Kevin and I did make sense. So we have our and and tool maker um, which does a huge amount of the analysis for us. But um, what we did is we built a

400
01:14:19.850 --> 01:14:23.849
WH11NE- Sunrise: lightly repo on top of that once the

401
01:14:24.380 --> 01:14:39.209
WH11NE- Sunrise: so build a docker image with just that. Software, So you know they really just put bases and something, and then you can take that, and you and it builds a full Cms, and you release with that inside of it. You could just take it plop on any computer and run it all twenty gigabytes of it

402
01:14:39.430 --> 01:14:57.680
WH11NE- Sunrise: when we did it two ways we did the lightweight version. So if the computer has Cpm: um, then it, then you two needs. I don't know um, and then we have the full version, which is yeah like twenty-five gigabytes in size.

403
01:14:57.970 --> 01:15:11.910
WH11NE- Sunrise: Uh, but that was what was required for Service X: So I see. Okay, Oh, man, that's a logistics nightmare. Then Um,

404
01:15:12.420 --> 01:15:16.729
WH11NE- Sunrise: I I I feel like I You hear about people who are just like, okay. I'm just trying to

405
01:15:23.030 --> 01:15:33.479
WH11NE- Sunrise: absolutely. But I. My point is between Github actions, and Docker and Cmssw and Cdfs. Uh,

406
01:15:34.050 --> 01:15:50.320
WH11NE- Sunrise: we have all the tools we need to make this reproducible, and we have a neural tool, and we call our analysis. Now you could. You could do this, not just at the end tilization stage. But you could do this at the analysis stage, for the whole thing really, really easily. Um.

407
01:15:50.330 --> 01:15:57.030
WH11NE- Sunrise: And then there's uh all the workflow orchestration stuff, too, that you can containerize and put in your descriptions and whatnot.

408
01:15:57.400 --> 01:16:14.170
WH11NE- Sunrise: Um, Okay, it's I I had. I really have not heard that Alice made this a required That changes my perspective quite a lot. Um, because I I just we don't see much traffic about this, at least popularized within Cms.

409
01:16:14.180 --> 01:16:20.750
WH11NE- Sunrise: Widely. So. I know that there's certain groups that are very much about

410
01:16:21.660 --> 01:16:35.769
WH11NE- Sunrise: like docker, for W. Right like this is exactly what you have to do to do this to your analysis, right like. I don't care more about this right, but I understand it needs to happen. Here's exactly what you have to do.

411
01:16:35.780 --> 01:16:52.360
WH11NE- Sunrise: That was the idea behind the script that I wrote that. Just you don't need to know anything about Docker, and really it's using podm and fill the for security reasons. That's right. You see um, but you don't need to know anything. You just say, go, and it does it for you.

412
01:16:52.500 --> 01:16:54.480
WH11NE- Sunrise: Um, hopefully it's it's.

413
01:16:54.740 --> 01:16:58.259
WH11NE- Sunrise: What is it to be a troop? But it's hopefully for

414
01:16:58.400 --> 01:17:17.059
WH11NE- Sunrise: it. Yeah, like and like choices proof kind of right, like some logical default. I don't like. I don't want to have to think about this, but I know I have to do it. This is like, yeah, like I shows some things that you want to not include in in the in the image to reduce the size and um

415
01:17:17.070 --> 01:17:25.869
WH11NE- Sunrise: where the where the caches are stored when it's building. You know somebody makes some choices.

416
01:17:26.910 --> 01:17:28.569
WH11NE- Sunrise: It would be

417
01:17:29.050 --> 01:17:35.240
WH11NE- Sunrise: this all. I actually it's well. Clements did a huge service, for

418
01:17:41.780 --> 01:17:55.699
WH11NE- Sunrise: anyone can go to where you can request that any same Ssw. Be turned into a doctor released into a documentator. He has a set that he use for the open data stuff, and I've requested it through that. Um!

419
01:17:56.110 --> 01:18:01.509
WH11NE- Sunrise: You can request a full image, or you can request the one that the like one one. Um,

420
01:18:01.550 --> 01:18:04.160
WH11NE- Sunrise: he said. There's almost no traffic there like,

421
01:18:04.180 --> 01:18:07.080
WH11NE- Sunrise: even though it was publicized in the open data,

422
01:18:07.450 --> 01:18:14.120
WH11NE- Sunrise: and I don't know whatever you call that group. Um, almost no one. I would love to see more people use it

423
01:18:14.420 --> 01:18:18.710
WH11NE- Sunrise: because that means that people are making containers.

424
01:18:18.870 --> 01:18:21.269
WH11NE- Sunrise: Yeah, Yeah, um.

425
01:18:22.890 --> 01:18:27.589
WH11NE- Sunrise: It would be interesting to get this kind of stuff into. Uh

426
01:18:27.650 --> 01:18:43.500
WH11NE- Sunrise: I know It's not strictly python, but get in, Get into uh being shown regularly at. I have and draw draw the connection more often in more places, to the fact that you use this, together with more modern analysis tools to get better reproducibility easily,

427
01:18:43.510 --> 01:18:50.349
WH11NE- Sunrise: which I know is what you're trying. Yeah, that is, uh, definitely, I'm: sure what you're advertising. But we just need to it. This sounds like a

428
01:18:50.450 --> 01:19:03.689
WH11NE- Sunrise: just uh the scaling problem, an advertising issue more than anything else Um! And and and convincing people that it's worth the time, or that the time has been minimized so thoroughly by other people that they should just do it.

429
01:19:03.870 --> 01:19:17.370
WH11NE- Sunrise: To be honest, I I I see, obviously you and others talk about Pi help and going to Python, I haven't really paid it much attention. It It gets quite a bit of a attendance like a easily

430
01:19:17.660 --> 01:19:37.379
WH11NE- Sunrise: What? Four or five hundred people on the first days, and things like that. The first day is pretty cool, so that they that whoever does the the first thing about the kind of level up your python. What is it called? Yeah, Something like that. They have some height, guys. It's it's. It's it's once a year, but it's It's very well attended.

431
01:19:37.390 --> 01:19:53.159
WH11NE- Sunrise: Um, and then at the very, and it's attended by uh, yeah, definitely a a healthy portion of uh us atlas. We're sorry uh battles and Cms, but also La C be in the lease and uh other places further and field Even

432
01:19:53.350 --> 01:19:58.859
WH11NE- Sunrise: so, it's just got this great uh cross section of people to talk to your stuff about.

433
01:19:59.020 --> 01:20:02.740
WH11NE- Sunrise: That's cool, I think. I think. Yeah, if if someone could

434
01:20:02.780 --> 01:20:06.179
WH11NE- Sunrise: talk to Atlas Rihanna, people

435
01:20:06.190 --> 01:20:24.160
WH11NE- Sunrise: see what's available there with, you know, for users just use talk to Clemens, talk to people on Cms and put something together that I I I think it would be really worth it to put put together kind of a a review or a advertisement for reproducibility or containerization. I have, because, uh,

436
01:20:24.480 --> 01:20:40.470
WH11NE- Sunrise: you know, with Python, with the rate at which Python baggage is change. It would be useful to be able to wrap things up like that. Well, it is we're finding out the other day. It's not trip which you have a a threshold of packages. It's not trivial, if I

437
01:20:40.890 --> 01:20:49.189
WH11NE- Sunrise: that's sort of the uh that, that. And it turns out that there's even deeper problems like the uh

438
01:20:49.500 --> 01:21:00.209
WH11NE- Sunrise: uh, what was what's it called uh pi Torch itself is not built with a uh optimized on your algebra package in the Vicin installed version, or the cond installed version.

439
01:21:00.510 --> 01:21:05.049
WH11NE- Sunrise: And so it's really really slow compared to the Cdm.

440
01:21:05.590 --> 01:21:08.059
WH11NE- Sunrise: Like by a factor of fifty,

441
01:21:09.020 --> 01:21:15.760
WH11NE- Sunrise: and the Cvm. At that one it's the Cvm. Ofs. One is very fast, you know what's with it. It's all the open bloss.

442
01:21:16.870 --> 01:21:23.370
WH11NE- Sunrise: So, in other words, through an Lcg. Release. So in other words, if you want speed, you have to

443
01:21:23.560 --> 01:21:27.460
WH11NE- Sunrise: install from source, which is um,

444
01:21:27.510 --> 01:21:29.609
WH11NE- Sunrise: it's kind of ridiculous. Yeah,

445
01:21:29.970 --> 01:21:37.090
WH11NE- Sunrise: they, I I know Condes supplies it within Kl: which is intel's uh magical like uh linear Algebra library. But

446
01:21:37.230 --> 01:21:53.699
WH11NE- Sunrise: uh it, we didn't see the speed up there, either, which makes me wonder if, like the Cpu only built or busted, or something like that, did you put in a uh, I I haven't definitively tagged it yet, uh or neither has a

447
01:21:56.760 --> 01:22:06.620
WH11NE- Sunrise: excuse me, There is Patrick. I know he's trying to get things working. Um, but it looks like there's some really weird inconsistencies between uh,

448
01:22:06.960 --> 01:22:24.569
WH11NE- Sunrise: uh, the different installable versions of torch. And so this is some of the slowdown is present. That image that you just built. Okay. Got it, and It's a present uh building the whole thing in a different way where I got all the versions to line direct, I mean after it. It's so funny how,

449
01:22:24.990 --> 01:22:30.059
WH11NE- Sunrise: when you hear something, once you hear multiple times or so, a student just asked me how to get

450
01:22:30.100 --> 01:22:43.440
WH11NE- Sunrise: I torch inferencing into uh coffee? Uh? The the answer is, after you went through that issue. The The real answer, if you want inference, is to use uh

451
01:22:43.730 --> 01:22:52.060
WH11NE- Sunrise: either convert to onyx or uh, or use uh Nvidia Triton like those That's that's the way you really get the performance.

452
01:22:52.140 --> 01:22:57.429
WH11NE- Sunrise: So I know

453
01:22:58.290 --> 01:23:15.829
WH11NE- Sunrise: i'm gonna i'm gonna mix things here because sonic uses and videos. Right? I know sonic works on its own. Outside of is the sonic inferencing framework uh you. You could call stuff that's being loaded up by sonic from copy. There's nothing stopping that.

454
01:23:17.490 --> 01:23:20.780
WH11NE- Sunrise: What I'm trying to say is, let's say I

455
01:23:21.760 --> 01:23:26.019
WH11NE- Sunrise: let's say, I want to launch see Job Queue.

456
01:23:26.180 --> 01:23:27.080
WH11NE- Sunrise: You know

457
01:23:27.450 --> 01:23:33.390
WH11NE- Sunrise: Okay, I want to do some inferences with them. Now.

458
01:23:33.840 --> 01:23:35.160
WH11NE- Sunrise: You

459
01:23:35.210 --> 01:23:53.439
WH11NE- Sunrise: I already have to spun up an in video Triton server somewhere, the way things are right now. Yes, um, uh right now. It's pretty bare bones compared to what you have in C in the Sw. Where it has like the the Cpu fall back, and all that stuff uh. So if you wanted Gpu access

460
01:23:53.680 --> 01:24:03.190
WH11NE- Sunrise: uh, or if you wanted to run it uh,

461
01:24:04.280 --> 01:24:24.919
WH11NE- Sunrise: or we are in the process of setting it up so that you could do the Gpu nodes at the elastic analysis. Facility. So that's That's where we're going. What going with this eventually. But you have to spin up your own trit and servers there. Um! Make sure the ports are open, and then get them talking to each other. I think that alone would be helpful. And

462
01:24:25.020 --> 01:24:28.650
WH11NE- Sunrise: so so it's a What they built was a graph from all that work

463
01:24:28.660 --> 01:24:45.730
WH11NE- Sunrise: based on part of all that. Okay. So I don't know how hard it is to convert it to onyx, but it's starting to Patrick um how or what's the actual time Slot, because we still have.

