-
Notifications
You must be signed in to change notification settings - Fork 2
/
slides.html
369 lines (232 loc) · 7.32 KB
/
slides.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
<!DOCTYPE html>
<html>
<head>
<title>title</title>
<meta charset="utf-8">
<style>
@import url(https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz);
@import url(https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic);
@import url(https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic);
body {
font-family: 'Droid Serif';
}
h1,
h2,
h3 {
font-family: 'Yanone Kaffeesatz';
font-weight: normal;
}
.remark-code,
.remark-inline-code {
font-family: 'Ubuntu Mono';
}
.remark-slide-content {
padding-left: 3em;
}
.remark-slide-content h1 {
margin-top: 1;
}
.pull-left {
float: left;
width: 47%;
}
.pull-right {
float: right;
width: 47%;
}
</style>
</head>
<body>
<textarea id="source">
layout: true
name: title-layout
class: center, middle
---
layout: true
name: single-layout
class: top
---
template: title-layout
# ECE408 / CS483 / CSE 408 Final Project Kickoff
## Vikram Sharma Mailthody/Zaid Qureshi
## `[email protected]`
## `[email protected]`
---
template: single-layout
# Outline
Fast convolution layer forward pass in MxNet
You are required to implement optimized convolutional layer for a 2 layer convolution neural network. We will be classifying fashion mnist dataset for this project.
##Parameters that you must be aware of:
Input channels - 1
Input size - 72x72
Kernel size - 7x7
Filters - different sizes. (your code should support it)
---
# Timeline (1/2)
Deadline is at 5PM for all milestones.
### Wed 10/24/2018: Milestone 1
Make sure `rai` works for you
### Wed 11/07/2018: Milestone 2
CPU Implementation
### Wed 11/16/2018: Milestone 3
GPU implementation and performance preview
---
# Timeline (2/2)
### Sun 12/02/2018: Milestone 4
GPU optimizations
### Fri 12/14/2018: Final Submission
---
# Project Release
## Project Landing Page
[https://github.com/illinois-impact/ece408_project](https://github.com/illinois-impact/ece408_project)
Includes
* Instructions
* RAI Client
* Final Project Rubric
* Other Guidelines
* Skeleton Code
---
# rai Client
The client may be downloaded from the project readme
You will need your `.rai_profile` file in your home directory.
* `~/.rai_profile` on Linux/macOS
* `%HOME%/.rai_profile` on Windows
This should have been emailed to you.
(demo)
---
# Teams
## Team of 3 People
Submit your team name to [this form](https://goo.gl/forms/NsjlmP4IIt1YKCf63)
Modify `.rai_profile` with your team name under `team.name`:
profile:
firstname: Zaid
lastname: Qureshi
username: zaidq2
email: [email protected]
access_key: auth0|5a0130d32327ea70420b71ef
secret_key: <snip>
affiliation: uiuc
team:
name: staff
---
# Basic `rai`
`rai -p <project folder>` --queue rai_amd64_ece408 uploads your folder to AWS/IMPACT Servers.
Your code in `rai_build.yml` is executed on AWS (or IMPACT Servers) in a specific docker container.
The results are streamed back to you in *real time*.
---
# Milestone 1 (Wed 10/24/2018 @ 5pm)
* Make sure rai is working for you
* Choose your teams / team name
## Run MxNet baseline CPU code
* Make sure MxNet is working.
* Report execution time.
## Run MxNet baseline GPU code
* Make sure MxNet GPU is working
* Report execution time.
## Show your stuff in `report.pdf`
* please make this a pdf file
(demo)
---
# Submitting
`rai -p <project folder> --queue rai_amd64_ece408 --submit=[m1,m2,m3,m4,final]`
* Enforces a particular rai_build.yml
* Records timing information
* You will need a `report.pdf`.
Your code should work correctly here, this is what matters.
We'll look at the latest one before the deadline.
---
# Milestone 2 (Wed 11/07/2018 @ 5pm)
Turn in an updated `report.pdf`
## Implement CPU forward pass
* Make sure you can compile/run MxNet CPU code.
* Execution time
Should be pretty straightforward copy from slides / chapter 16
## Intro to `nvprof`
* Use nvprof to collect some basic info
---
# Milestone 3 (Wed 11/16/2018 @ 5pm)
Turn in an updated draft of `report.pdf`.
## Implement GPU forward pass
* Make sure you can compile/run MxNet GPU code.
* Execution time, profile
Doesn't have to be fast, but it should work.
Small changes to milestone 2.
---
# Milestone 4 (Sun 12/2/2018)
Updated `report.pdf`
## Implement 3 GPU optimizations
Use `nvprof` / NVVP to describe effect of optimizations
---
# Final Submission (Fri 12/14/2018)
* The **real deal**.
Optimize that GPU convolution.
Turn in a final report.
---
# Rubric
1. Milestone 1 ( 5% )
2. Milestone 2 ( 10% )
3. Milestone 3 ( 10% )
* Optimization 1
4. Final Optimizations ( 60% )
* Optimization 2 ( 10% )
* Optimization 3 ( 10% )
* Optimization 4 ( 10% )
* Optimization 5 ( 10% )
* Optimization 6 ( 10% )
* Additional Optimizations / detailed insights ( 10% )
5. Performance Ranking ( 10% )
6. Report Style (10 %)
* Clear, concise writing, good layout, and good organization will be rewarded.
---
# Optimizations Rubric
Each optimization will be graded as follows:
* Explanation of Performance Impact ( 40% )
* Correctness ( 60% )
---
# Ranking Rubric
Each optimization will be graded as follows:
1. The median performance will be determined (how well the class did as a whole)
2. Your performance will be converted to a number of standard deviations above/below that median (how well you did compared to the class).
3. That value will be linearly mapped into the space of 0-10 to determine the ranking grade.
---
# Final report
See project page for up-to-date rubric.
You've been building this final report through all the milestones. Keep the content from the earlier milestones, but be sure to include the following:
* Your team name
* Your team member names
* Your netids
* Your UINs
For each optimization
1. Optimization Approach and Results
* how you identified the optimization opportunity
* why you thought the approach would be fruitful
* the effect of the optimization. was it fruitful, and why or why not. Use nvprof and NVVP to justify your explanation.
* Any external references used during identification or development of the optimization
* How your team organized and divided up this work.
2. References (as needed)
3. (Optional) Suggestions for Improving Next Year
---
# Comparing against your peers
`rai rankings`
Shows *anonymized* performance results for you and other teams.
---
# `rai` tips and tricks
## `rai -p <project folder> version
Prints the date `rai` was built
Check piazza, if your `rai` is old, download a newer one
## `rai -p <project folder> --queue rai_amd64_ece408 -d -v
Debug / verbose mode. Prints a bit of additional info while running
* the queue submitted to (should be `rai_amd64`)
* what it thinks your username and team name is
---
# Notes on `batch_size`
Don't modify the `batch_size` in the python script.
You can loop over `B` in the C/CUDA code and split it up there however you want.
</textarea>
<script src="https://remarkjs.com/downloads/remark-latest.min.js">
</script>
<script>
var slideshow = remark.create();
</script>
</body>
</html>