{"id":486210,"date":"2018-04-12T00:00:46","date_gmt":"2018-04-12T07:00:46","guid":{"rendered":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/?post_type=msr-research-item&#038;p=486210"},"modified":"2018-05-15T20:16:25","modified_gmt":"2018-05-16T03:16:25","slug":"tiny-functions-codecs-compilation-maybe-soon-everything","status":"publish","type":"msr-video","link":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/video\/tiny-functions-codecs-compilation-maybe-soon-everything\/","title":{"rendered":"Tiny Functions for Codecs, Compilation, and (maybe) soon Everything"},"content":{"rendered":"<p>Networks, applications, and media codecs frequently treat one another as strangers. By expressing large systems as compositions of small, pure functions, we&#8217;ve found it&#8217;s possible to achieve tighter couplings between these components, improving performance without giving up modularity or the ability to debug. I&#8217;ll discuss our experience with systems that demonstrate this basic idea: ExCamera (NSDI 2017) parallelizes video encoding into thousands of tiny tasks, each handling a fraction of a second of video, much shorter than the interval between key frames, and executing in parallel on AWS Lambda. This was the first system to demonstrate &#8220;burst-parallel&#8221; thousands-way computation on functions-as-a-service infrastructure. Salsify (NSDI 2018) is a low-latency network video system that uses a purely functional video codec to explore execution paths of the encoder without committing to them, allowing it to closely match the capacity estimates from a video-aware transport protocol. This architecture outperforms more loosely-coupled applications &#8212; Skype, Facetime, Hangouts, WebRTC &#8212; in delay and visual quality, and suggests that while improvements in video codecs may have reached the point of diminishing returns, video systems still have low-hanging fruit. Lepton (NSDI 2017) uses a purely functional JPEG\/VP8 transcoder to compress images in parallel across a distributed network filesystem with arbitrary block boundaries. This free-software system is in production at Dropbox and has compressed, by 23%, more than 200 petabytes of user JPEGs.<\/p>\n<p>Based on our experience, we propose an intermediate representation for interactive lambda computing, called cloud &#8220;thunks&#8221; &#8212; stateless closures that describe their data-dependencies by content-hash, separating the specification of an algorithm from its schedule and execution. We have created a tool that extracts this IR from off-the-shelf software build systems, letting the user treat a FaaS service like a 5,000-core build farm with global memoization of results. Expressing systems and protocols as compositions of small, pure functions has the potential to lead to a wave of &#8220;general-purpose&#8221; lambda computing, permitting us to transform everyday time-consuming operations into large numbers of functions executing with massive parallelism for short durations in the cloud.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Networks, applications, and media codecs frequently treat one another as strangers. By expressing large systems as compositions of small, pure functions, we&#8217;ve found it&#8217;s possible to achieve tighter couplings between these components, improving performance without giving up modularity or the ability to debug. I&#8217;ll discuss our experience with systems that demonstrate this basic idea: ExCamera [&hellip;]<\/p>\n","protected":false},"featured_media":486375,"template":"","meta":{"msr-url-field":"","msr-podcast-episode":"","msrModifiedDate":"","msrModifiedDateEnabled":false,"ep_exclude_from_search":false,"_classifai_error":"","msr_hide_image_in_river":0,"footnotes":""},"research-area":[13551,13547],"msr-video-type":[206954],"msr-locale":[268875],"msr-post-option":[],"msr-session-type":[],"msr-impact-theme":[],"msr-pillar":[],"msr-episode":[],"msr-research-theme":[],"class_list":["post-486210","msr-video","type-msr-video","status-publish","has-post-thumbnail","hentry","msr-research-area-graphics-and-multimedia","msr-research-area-systems-and-networking","msr-video-type-microsoft-research-talks","msr-locale-en_us"],"msr_download_urls":"","msr_external_url":"https:\/\/youtu.be\/xM7pJTm7Q3o","msr_secondary_video_url":"","msr_video_file":"","_links":{"self":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/486210","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-video"}],"about":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/types\/msr-video"}],"version-history":[{"count":2,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/486210\/revisions"}],"predecessor-version":[{"id":486246,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/486210\/revisions\/486246"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/media\/486375"}],"wp:attachment":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/media?parent=486210"}],"wp:term":[{"taxonomy":"msr-research-area","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/research-area?post=486210"},{"taxonomy":"msr-video-type","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-video-type?post=486210"},{"taxonomy":"msr-locale","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-locale?post=486210"},{"taxonomy":"msr-post-option","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-post-option?post=486210"},{"taxonomy":"msr-session-type","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-session-type?post=486210"},{"taxonomy":"msr-impact-theme","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-impact-theme?post=486210"},{"taxonomy":"msr-pillar","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-pillar?post=486210"},{"taxonomy":"msr-episode","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-episode?post=486210"},{"taxonomy":"msr-research-theme","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-research-theme?post=486210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}