- Fri Oct 28th -- Project Proposal Due
- Mon Nov 21st -- Checkpoint Report
- Fri Dec 16th -- Project Presentations / Final Report Due
Project Proposal (due Fri, Oct 28th)
The purpose of the proposal is two-fold:
- Writing your ideas down forces you to organize your thoughts about your project .
- It gives me the ability to verify that your plans are of the right scope (and it also gives me the ability to offer suggestions and help, if applicable).
You may submit a project proposal by emailing me a pdf or by sending me a link to a webpage. In either case, I recommend that proposal contain the following sections and content:
TITLE. Please provide the title of your project, followed by the names of all team members.
SUMMARY. Summarize your project in no more than 2-3 sentences. Describe what you plan to do and (most importantly) what will be learned. By "what will be learned", I mean what is the question the project is trying to answer? (or what hypothesis will be tested?) If this proposal was a paper, this would be where you attempt to list the anticipated contributions or single big idea of your project. -- yes, they may evolve over time. In general, this short description serves to get you thinking about the essence of what you are trying to achieve.
BACKGROUND/THE CHALLENGE. Why is it hard? Describe why the question you are trying to answer is a challenging one (and why success would constitute a contribution). Specifically, think about this as the problem framing often done by the related work in a publication. * Halide generated good code for CPUs, but its GPU code generation abilities are not as good for reason X, Y, Z. * The challenge is establishing the set of minimal rewrite rules that encompass the space of optimizations in modern DNN libraries. * etc.
RESOURCES. Describe the resources (type of computers, starter code, etc.) you will use. What code base will you start from? (have you successfully been able to built the starter codebase on your target machine?) Are you starting from scratch or using an existing piece of code? Is there a book or paper that you are using as a reference (if so, provide a citation)? Are there any other resources you need, but haven't figured out how to obtain yet? Could you benefit from access to any special machines?
GOALS AND DELIVERABLES. Describe the deliverables or goals of your project. This is by far the most important section of the proposal:
- Separate your goals into what you PLAN TO ACHIEVE (what you believe you must get done to have a successful project and get the grade you expect) and an extra goal or two that you HOPE TO ACHIEVE if the project goes really well and you get ahead of schedule. It may not be possible to state precise performance goals at this time, but we encourage you be as precise as possible. If you do state a goal, give some justification of why you think you can achieve it. (e.g., I hope to speed up my starter code 10x)
- If applicable, describe the artifact (or demo) you plan to show in your final presentation (will it be an interactive demo? will you show an output of the program that is really neat? will you show speedup/scability graphs?). Specifically, what will you include in your final report that will demonstrate you did a good job? (the teams that think about an evaluation plan now typically end up with the best projects -- what dataset/workloads will you use for evaluation?)
- Systems building project proposals should describe what the system will be capable of and what performance is hoped to be achieved.
SCHEDULE. Although this will certainly get refined in the coming week or so, attempt to make a schedule for the project. List what you plan to get done each week from now until the project due date in order to meet your project goals -- take note of the checkpoint due date in mi November. It's perfectly fine to admit that in some weeks you will get nothing done (due to conference travel or other deadlines). In designing a schedule it's often helpful to work backward in time from your deliverables and goals, writing down all the little things you'll need to do (establish the dependencies!).
Project Checkpoint (due Mon, Nov 21st)
Please submit a checkpoint report with the following contents:
The point of the checkpoint is to force you to reach a state where you have a concrete actionable plan in place to complete your project. This means I'd like you to tell me:
- What starter code (if any) you are using. Also that you've selected, obtained, built, and run any starter code you need to get going.
- You've selected the initial workloads and/or datasets you will be performing your project and its analysis on. You can always add additional, more complex, workloads later as "nice to haves", but a set of basic workloads should be identified by this point. Specifically, this means you've selected and obtained the appropriate datasets, DNN's, etc. In your checkpoint writeup I want you to explain to me why that choice of workload is the most meaningful one. (Recall at several points in class we've called into question the analysis of published systems.)
- If your project is performance oriented show that you have been able to run "end-to-end" at this juncture, and have an initial results graph (or output) to show me that can serve as a reasonable baseline for all further progress. No matter how slow the current state of the system is at this point, you want to be able to run end to end. If your project is training oriented you should have selected/designed a mini-network at this point and been able to run a bit of training on a small test dataset.
- You have written the "test harness" you need to analyze end-to-end correctness, performance, etc. From this point forward in the project you should be able to run a script and generate all your results. This part of the project is very important and allows for much more efficient work going forward. If you have not done this, do it now!
- You have identified computing resources you need to get final results (e.g., high-end GPUs, high memory machines, etc.), and are in the process of obtaining it if you have not already.
Given what you know now, I want you to clearly re-state your expected project outcomes/deliverables.
- I am asking the following research question... / I hope to show that _____________________________________.
- The reason why this project is challenging is ______________________________.
- I will demonstrate success/failure by running this experiment, and show the following demo/analysis/etc.
In the final part of the checkpoint I want you to map out the final four weeks of the project. Start with your deliverables (which are due on the week of 12/16) and work backward from there. Be realistic in this schedule. The Thanksgiving holiday is coming up, and you have other research/class obligations. If you look at your schedule and it is clearly unrealistic, you need to change your project goals to make it more tenable. Expectations of projects are high, and it is impossible to do a good project in the final two weeks. Make this plan now!
- Week ending Dec 16th
- Week ending Dec 9th
- Week ending Dec 2nd
- Week ending Nov 25th