{"id":627,"date":"2020-05-12T00:12:02","date_gmt":"2020-05-12T00:12:02","guid":{"rendered":"http:\/\/deberker.com\/archy\/?p=627"},"modified":"2021-11-06T15:33:39","modified_gmt":"2021-11-06T15:33:39","slug":"organizing-applied-machine-learning-research","status":"publish","type":"post","link":"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/","title":{"rendered":"Organizing applied machine learning research"},"content":{"rendered":"\n<p>Over the past three years, I\u2019ve spent &gt;50% of my time thinking about what the applied research teams I\u2019ve been part of should be building, and how. This post is about some of the challenges we\u2019ve faced organizing applied machine learning research in a hyper-growth setting.&nbsp;<\/p>\n\n\n\n<p>These observations are subjective and no doubt overfit to my personal experience; if you&#8217;re leading teams at Google Brain, this blogpost is probably not for you. If you&#8217;re in a startup which is pre product market fit and seems to be spending a lot of money on GPUs, listen up.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. You will build useless stuff, so build it fast<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1517824806704-9040b037703b?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;auto=format&amp;fit=crop&amp;w=1950&amp;q=80\" alt=\"\"\/><figcaption>It&#8217;s tempting to build palaces of code, with turrets, fancy windows, and spiral staircases. Instead, you should try and build tents: light, simple, and easy to move once you realize you&#8217;re in completely the wrong place. Photo by&nbsp;<a href=\"https:\/\/unsplash.com\/@byadonia?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">\u015eahin Ye\u015filyaprak<\/a>&nbsp;on&nbsp;<a href=\"https:\/\/unsplash.com\/?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Unsplash<\/a><\/figcaption><\/figure>\n\n\n\n<p>You <strong>will<\/strong> end up building useless stuff. In a highly-uncertain startup setting you\u2019re guaranteed to write lots of code that you\u2019re going to need to throw away. <\/p>\n\n\n\n<p>This is ok, because it\u2019s by writing this code that you learn which bits are useful and which bits are not. Some models won\u2019t work; others will work, but not provide business value; others will be superseded by some amazing open source implementation a month after you\u2019ve finished writing them. Your job is to make sure that the code you now need to throw away was written as quickly as possible.<\/p>\n\n\n\n<p>There are lots of reasons why developers and scientists are tempted into overengineering. Here&#8217;s a few:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>it\u2019s nice to write things from scratch rather than reusing or building upon existing solutions<\/li><li>starting a new feature gives a sense of ownership and pride that isn\u2019t associated with marginal improvements to the status quo<\/li><li>there\u2019s a certain satisfaction to building heavyweight tools which bolsters your sense of professional pride and yields a sensation of solidity<\/li><li>and the most seductive, &#8220;if we don\u2019t build this now, we will encounter the problem later&#8221;<\/li><\/ul>\n\n\n\n<p>These are all <strong>bad<\/strong> reasons. It takes a lot of self-awareness to acknowledge that you don\u2019t understand the problem space well enough to justify building tooling. Until you really understand what you\u2019re solving, and the painpoints have become festering sores, you shouldn\u2019t be building \u2018my distributed framework for X\u2019 or \u2018automated dispatching of Y\u2019. <\/p>\n\n\n\n<p>This problem is exacerbated in ML, because often the loop time is long &#8211; it can take a long time to train a model. Going through the iterations needed to figure out what is useful or not can become very time consuming. This is further exacerbated if you don\u2019t have labelled data, in which case you\u2019re also going to have delays whilst data gets labelled. The solution to both of these is to try and stick to very simple models, trained on very small datasets. This will help you keep your loop time manageable until you\u2019re&nbsp;<em>certain<\/em>&nbsp;you\u2019re solving a real problem.<\/p>\n\n\n\n<p>Most of the code you write in an applied research context is not about adding a feature; it\u2019s about testing an idea. You need your code to be good enough that&nbsp; you can trust the conclusions that you\u2019re going to draw from it. If you screw up your evaluation pipeline, for instance, you\u2019re in all kinds of trouble, because you won\u2019t be able to tell whether the changes you\u2019re making to the codebase are actually making things better or worse.<\/p>\n\n\n\n<p>But by and large, it\u2019s not worth writing your machine learning code in the expectation that it will be reused. Code designed to be easily extensible is often harder to read and more prone to bugs than simpler implementations. Yes, you may find that building 6 layers of inheritance from your DeepCNN base class prevents you copying and pasting some code at some point in the future. But it\u2019s more likely that you find out that actually you should be using an RNN, and you end up throwing away the CNN entirely.&nbsp;Don\u2019t take my word for it:&nbsp;<a href=\"http:\/\/karpathy.github.io\/2019\/04\/25\/recipe\/\">Andrej Karpathy agrees.<\/a><\/p>\n\n\n\n<p>Sometimes it\u2019s tempting to put aside your reservations and embark on building something you\u2019re not really sure will be helpful, but somebody <em>else<\/em> thinks is important. <strong>Be very wary.<\/strong> You and the team will eventually need to decide whether to maintain this feature or whether to kill it. Killing things is demoralizing, particularly when everybody involved acknowledges that it didn\u2019t need to be built in the first place. If there\u2019s even an inkling of doubt: You Ain&#8217;t Gonna Need it (YAGNI).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Not all learning is equal<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/images.unsplash.com\/reserve\/oIpwxeeSPy1cnwYpqJ1w_Dufer%20Collateral%20test.jpg?w=660&#038;ssl=1\" alt=\"\"\/><figcaption>There are often lots of interesting and novel ways of solving problems with fascinating tools that will &#8220;only take an afternoon to learn&#8221;. But there&#8217;s also usually a more direct approach with the tools and skills you already have. Photo by&nbsp;<a href=\"https:\/\/unsplash.com\/@byadonia?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">\u015eahin Ye\u015filyaprak<\/a>&nbsp;on&nbsp;<a href=\"https:\/\/unsplash.com\/s\/photos\/toolkit?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Unsplash<\/a><\/figcaption><\/figure>\n\n\n\n<p>Building seemingly useful stuff is seductive, and so is learning seemingly useful stuff.<\/p>\n\n\n\n<p>Generally, the best way to learn the set of skills you need to build cool things is to go ahead and build cool things. There may be specific instances where it\u2019s more efficient to do some tutorials than to dive straight in, but if you want your team to get really good at building and debugging deep learning models, they should be doing that. The space of things you could learn that would not help your company build great products is literally infinite.&nbsp;<\/p>\n\n\n\n<p>There\u2019s an awful lot of novelty in software and <em>especially <\/em>ML, and it requires discipline to resist the FOMO associated with the release of each new pipeline tool, framework, or pretrained model library. If it solves a problem you are suffering from, then maybe it\u2019s worth learning. But it\u2019s worth learning because it solves a problem, not because \u2018learning\u2019 is inherently good.&nbsp;<\/p>\n\n\n\n<p>I think this is the right direction to lean in, but this can lead to a bit of tunnel-vision. Correctly managed, giving the team some fraction of their time to explore problems outside of their immediate scope &#8211; Google advocates 20% &#8211; can be very impactful. But I think it\u2019s necessary to ground that exploration in real problems, rather than random wanderings in machine-learning land. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Place lots of bets, but keep the team together<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1518082903679-22ec3732ff0c?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;auto=format&amp;fit=crop&amp;w=1950&amp;q=80\" alt=\"\"\/><figcaption>Everybody in the team needs to be able to think independently, but you have to co-ordinate the work to keep momentum and alignment. Photo by&nbsp;<a href=\"https:\/\/unsplash.com\/@byadonia?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">\u015eahin Ye\u015filyaprak<\/a>&nbsp;on&nbsp;<a href=\"https:\/\/unsplash.com\/s\/photos\/red-arrows?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Unsplash<\/a><\/figcaption><\/figure>\n\n\n\n<p>The challenge of research is that it\u2019s often really hard to predict the return on effort invested.<\/p>\n\n\n\n<p>This is what the US Marines refer to as a \u2019non-linearity\u2019: a small investment in the right place at the right time can produce outlandish results. For instance, a minor change in your preprocessing pipeline might reveal a bug that causes a massive drop in performance; adding a pretrained embedding can take your optimization problem from intractable to converging; a new open-source implementation might solve your problem straight out of the box.<\/p>\n\n\n\n<p>Because you cannot know in advance which particular investment will pay off in droves, you need to be able to keep your research agenda fairly diverse. I\u2019ve found it common for teams to double down upon too small a subset of ideas. It feels good if everybody in the team is pulling in the same direction, and communal understanding of these ideas is progressively deepening and maturing. But inevitably inertia and sunk-costs lead you to overinvest in your current agenda. It\u2019s easy to get stuck in a local minima where you see drastically decreasing returns with increasing investment of effort.<\/p>\n\n\n\n<p>The converse is not much better: everybody working on completely disparate approaches to a problem usually leads to isolation, bugs, and completely unintelligible code. This is what you often see in academic science. Because it\u2019s conducted by lone individuals, the research artefacts produced are often of very poor quality; without constant scrutiny from peers, it\u2019s difficult to spot errors. Furthermore, the majority of careers in science fail, because the ideas that were being pursued didn\u2019t work. This isn\u2019t a dynamic you want to encourage in your teams.<\/p>\n\n\n\n<p>I think the right decision here is a function of team age. With a young team, having everybody working closely together allows the mutual oversight that junior practitioners benefit from, as well as accelerating the development of camaraderie and team unity. Conversely, as the team and the individuals within it tend towards maturity, you want to allow more divergent agendas, giving people the space to follow their hunches without necessarily justifying every single line of code to the team as a whole. You need to be able to place a lot of bets, and the best way to do that is to allow people to explore their own ideas in individuals or pairs rather than straitjacketing them with a stifling planning process.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Time spent scoping is never wasted<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1496950866446-3253e1470e8e?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;auto=format&amp;fit=crop&amp;w=1950&amp;q=80\" alt=\"\"\/><figcaption>Every project is a journey into the unknown. Study the map before you pull on your boots. Photo by&nbsp;<a href=\"https:\/\/unsplash.com\/@sadswim?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">ian dooley<\/a>&nbsp;on&nbsp;<a href=\"https:\/\/unsplash.com\/s\/photos\/mapping?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Unsplash<\/a><\/figcaption><\/figure>\n\n\n\n<p>When doing work with clients or other teams, you will rarely regret investing time in defining and writing down scope.<\/p>\n\n\n\n<p>I\u2019ve been surprised at how reluctant people are to locking down written scopes for pieces of ML work. In part, it comes from the popularity of \u2018Agile\u2019 methodologies, which encourage you to build fast and iterate later. Whilst these ideas have definite value, my experience suggests that failure to scope at the start of a piece of work usually means you end up scoping it halfway through, once expectations around timelines and deliverables have already started to crystallize &#8211; and become resistant to change. This upsets the client and your team, both of whom come away with the impression that&nbsp;nobody really knows what\u2019s going on. The line between \u2018Agile\u2019 and \u2018poorly thought through\u2019 is a fine one.<\/p>\n\n\n\n<p>The most useful feature of a really good technical scoping is that it highlights your assumptions. In the case of machine learning, those assumptions are often about the data.&nbsp;<\/p>\n\n\n\n<p>Given the generally deplorable state of enterprise data, it\u2019s worth pushing to make sure the inputs and outputs to the system that you\u2019re building are completely understood by everybody &#8211; and that they match the data actually available in whatever system you\u2019re planning to integrate into. Even small misunderstandings about what data is stored and where, or&nbsp;<em>why<\/em>&nbsp;certain pieces of data get stored and others do not can lead to the specification of systems that are untrainable (because the requisite data&nbsp; was never stored), un-integratable (because what they produce doesn\u2019t match what the current system produces) or biased (because they\u2019re trained on a weird subset of the data).<\/p>\n\n\n\n<p>If you&#8217;re not technical, you <em>have<\/em> to have deeply technical ML people involved in this process. They might embarrass you by asking what a KPI or a POC stands for in front of a client, but you&#8217;ll be bloody glad when they point out that the data you&#8217;re asking them to train their models on doesn&#8217;t actually exist (yes, this happens).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Success is usually qualitative, not quantitative<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1507777163158-e166827ed01c?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;auto=format&amp;fit=crop&amp;w=2700&amp;q=80\" alt=\"\"\/><figcaption>This is the most successful product in history. It uses machine learning in lots of different ways. But you don&#8217;t buy an iPhone because Siri beats Google Assistant on some benchmarking dataset. You buy it because the experience is fantastic. Photo by&nbsp;<a href=\"https:\/\/unsplash.com\/@sadswim?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">ian dooley<\/a>&nbsp;on&nbsp;<a href=\"https:\/\/unsplash.com\/s\/photos\/numbers?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Unsplash<\/a>.<\/figcaption><\/figure>\n\n\n\n<p>Machine learning scientists are overly-quantitative.<\/p>\n\n\n\n<p>Quantitative is a lovely word, associated with serious people who make lots of money and conduct their research in rigorous ways without allowing opinions or judgements to creep in.<\/p>\n\n\n\n<p>The problem is that humans &#8211; even scientists- <a href=\"http:\/\/www.cog.brown.edu\/courses\/cg195\/pdf_files\/fall05\/CG195TverskyKahn1974.pdf\">just aren\u2019t really very good at interpreting numbers<\/a>. Furthermore, the numbers we use in machine learning often defy intuition (my loss is 0.90, anybody?). An over-reliance on numbers can often hide bugs in your code: printed predictions rarely lie, but wiggly loss curves often do (more war stories in <a href=\"https:\/\/towardsdatascience.com\/rookie-errors-in-machine-learning-bc1c627f2789?source=search_post---------0\">this post<\/a>).&nbsp;<\/p>\n\n\n\n<p>The problem is so much worse when you try to communicate how your model is performing to potential users. Those \u2018opinions\u2019 and \u2018judgements\u2019 we wanted to avoid creeping in are what people will rely upon to decide whether to buy your product. If you give them numbers they don\u2019t understand, they will form opinions and judgements of those instead.<\/p>\n\n\n\n<p>In every setting I\u2019ve seen, it&#8217;s better to provide a demo people can play with. No list of numbers will give them the same visceral understanding of the performance of the model. You will swiftly learn that the metrics we use to quantify model performance are a very crude guide to how satisfied a human being will be with using a system. Your abstractive summarization system might give you a better <a href=\"https:\/\/en.wikipedia.org\/wiki\/ROUGE_(metric)\">ROUGE<\/a> score than your extractive one, but people will be seriously weirded out when it makes stuff up that bears no resemblance to the original article.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Closing thoughts<\/h2>\n\n\n\n<p>Everything I&#8217;ve noted here, if taken to extremes, is bad advice.<\/p>\n\n\n\n<p>If your teams only write spaghetti code, your life will be full of stressful all-nighters and people quitting. If nobody ever learns anything new, you&#8217;ll become technologically obsolete. If you endlessly scope work rather than doing it, you&#8217;ll never deliver any value. If you don&#8217;t pay attention to quantitative metrics, your system won&#8217;t get better over time.<\/p>\n\n\n\n<p>Which means that doing good work in applied machine learning is a constant balancing act. Not unlike our models, we&#8217;re forced to endlessly tweak things in what feels a lot like stochastic gradient descent, and hope that we&#8217;re heading in the right direction. <\/p>\n\n\n\n<p>But if there was an analytical solution, it wouldn&#8217;t be machine learning. And it wouldn&#8217;t be nearly so much fun.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><em>Thanks to Patrick Steeves and Seb Paquet for comments on an earlier draft of this piece (they didn&#8217;t see all the controversial stuff I later added).<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Applied Machine Learning research is a bit different from standard software engineering. This post summarizes some of the things I&#8217;ve learned about leading applied ML teams.<\/p>\n","protected":false},"author":1,"featured_media":635,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"hide_page_title":"","_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[18,6,10],"tags":[],"class_list":["post-627","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-leadership","category-neural-networks","category-software"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Organizing applied machine learning research - Archy de Berker<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Organizing applied machine learning research - Archy de Berker\" \/>\n<meta property=\"og:description\" content=\"Applied Machine Learning research is a bit different from standard software engineering. This post summarizes some of the things I&#039;ve learned about leading applied ML teams.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/\" \/>\n<meta property=\"og:site_name\" content=\"Archy de Berker\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-12T00:12:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-06T15:33:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2020\/05\/sahin-yesilyaprak-V7uP-XzqX18-unsplash-1-scaled.jpg?fit=2560%2C1707&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"archy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@archydeb\" \/>\n<meta name=\"twitter:site\" content=\"@archydeb\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"archy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/\"},\"author\":{\"name\":\"archy\",\"@id\":\"https:\/\/deberker.com\/archy\/#\/schema\/person\/01cf8dd0f94a4ba124b26eeeeb59e67d\"},\"headline\":\"Organizing applied machine learning research\",\"datePublished\":\"2020-05-12T00:12:02+00:00\",\"dateModified\":\"2021-11-06T15:33:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/\"},\"wordCount\":2398,\"publisher\":{\"@id\":\"https:\/\/deberker.com\/archy\/#\/schema\/person\/01cf8dd0f94a4ba124b26eeeeb59e67d\"},\"image\":{\"@id\":\"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2020\/05\/sahin-yesilyaprak-V7uP-XzqX18-unsplash-1-scaled.jpg?fit=2560%2C1707&ssl=1\",\"articleSection\":[\"Leadership\",\"Neural networks\",\"Software\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/\",\"url\":\"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/\",\"name\":\"Organizing applied machine learning research - Archy de Berker\",\"isPartOf\":{\"@id\":\"https:\/\/deberker.com\/archy\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2020\/05\/sahin-yesilyaprak-V7uP-XzqX18-unsplash-1-scaled.jpg?fit=2560%2C1707&ssl=1\",\"datePublished\":\"2020-05-12T00:12:02+00:00\",\"dateModified\":\"2021-11-06T15:33:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2020\/05\/sahin-yesilyaprak-V7uP-XzqX18-unsplash-1-scaled.jpg?fit=2560%2C1707&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2020\/05\/sahin-yesilyaprak-V7uP-XzqX18-unsplash-1-scaled.jpg?fit=2560%2C1707&ssl=1\",\"width\":2560,\"height\":1707},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/deberker.com\/archy\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Organizing applied machine learning research\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/deberker.com\/archy\/#website\",\"url\":\"https:\/\/deberker.com\/archy\/\",\"name\":\"Archy de Berker\",\"description\":\"Building things with data\",\"publisher\":{\"@id\":\"https:\/\/deberker.com\/archy\/#\/schema\/person\/01cf8dd0f94a4ba124b26eeeeb59e67d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/deberker.com\/archy\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/deberker.com\/archy\/#\/schema\/person\/01cf8dd0f94a4ba124b26eeeeb59e67d\",\"name\":\"archy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/deberker.com\/archy\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2021\/09\/freelance-logo.png?fit=359%2C311&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2021\/09\/freelance-logo.png?fit=359%2C311&ssl=1\",\"width\":359,\"height\":311,\"caption\":\"archy\"},\"logo\":{\"@id\":\"https:\/\/deberker.com\/archy\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/archydeb\"],\"url\":\"https:\/\/deberker.com\/archy\/author\/archy\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Organizing applied machine learning research - Archy de Berker","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/","og_locale":"en_US","og_type":"article","og_title":"Organizing applied machine learning research - Archy de Berker","og_description":"Applied Machine Learning research is a bit different from standard software engineering. This post summarizes some of the things I've learned about leading applied ML teams.","og_url":"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/","og_site_name":"Archy de Berker","article_published_time":"2020-05-12T00:12:02+00:00","article_modified_time":"2021-11-06T15:33:39+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2020\/05\/sahin-yesilyaprak-V7uP-XzqX18-unsplash-1-scaled.jpg?fit=2560%2C1707&ssl=1","type":"image\/jpeg"}],"author":"archy","twitter_card":"summary_large_image","twitter_creator":"@archydeb","twitter_site":"@archydeb","twitter_misc":{"Written by":"archy","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/#article","isPartOf":{"@id":"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/"},"author":{"name":"archy","@id":"https:\/\/deberker.com\/archy\/#\/schema\/person\/01cf8dd0f94a4ba124b26eeeeb59e67d"},"headline":"Organizing applied machine learning research","datePublished":"2020-05-12T00:12:02+00:00","dateModified":"2021-11-06T15:33:39+00:00","mainEntityOfPage":{"@id":"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/"},"wordCount":2398,"publisher":{"@id":"https:\/\/deberker.com\/archy\/#\/schema\/person\/01cf8dd0f94a4ba124b26eeeeb59e67d"},"image":{"@id":"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2020\/05\/sahin-yesilyaprak-V7uP-XzqX18-unsplash-1-scaled.jpg?fit=2560%2C1707&ssl=1","articleSection":["Leadership","Neural networks","Software"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/","url":"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/","name":"Organizing applied machine learning research - Archy de Berker","isPartOf":{"@id":"https:\/\/deberker.com\/archy\/#website"},"primaryImageOfPage":{"@id":"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/#primaryimage"},"image":{"@id":"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2020\/05\/sahin-yesilyaprak-V7uP-XzqX18-unsplash-1-scaled.jpg?fit=2560%2C1707&ssl=1","datePublished":"2020-05-12T00:12:02+00:00","dateModified":"2021-11-06T15:33:39+00:00","breadcrumb":{"@id":"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/#primaryimage","url":"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2020\/05\/sahin-yesilyaprak-V7uP-XzqX18-unsplash-1-scaled.jpg?fit=2560%2C1707&ssl=1","contentUrl":"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2020\/05\/sahin-yesilyaprak-V7uP-XzqX18-unsplash-1-scaled.jpg?fit=2560%2C1707&ssl=1","width":2560,"height":1707},{"@type":"BreadcrumbList","@id":"https:\/\/deberker.com\/archy\/organizing-applied-machine-learning-research\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/deberker.com\/archy\/"},{"@type":"ListItem","position":2,"name":"Organizing applied machine learning research"}]},{"@type":"WebSite","@id":"https:\/\/deberker.com\/archy\/#website","url":"https:\/\/deberker.com\/archy\/","name":"Archy de Berker","description":"Building things with data","publisher":{"@id":"https:\/\/deberker.com\/archy\/#\/schema\/person\/01cf8dd0f94a4ba124b26eeeeb59e67d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/deberker.com\/archy\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/deberker.com\/archy\/#\/schema\/person\/01cf8dd0f94a4ba124b26eeeeb59e67d","name":"archy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/deberker.com\/archy\/#\/schema\/person\/image\/","url":"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2021\/09\/freelance-logo.png?fit=359%2C311&ssl=1","contentUrl":"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2021\/09\/freelance-logo.png?fit=359%2C311&ssl=1","width":359,"height":311,"caption":"archy"},"logo":{"@id":"https:\/\/deberker.com\/archy\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/x.com\/archydeb"],"url":"https:\/\/deberker.com\/archy\/author\/archy\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/deberker.com\/archy\/wp-content\/uploads\/2020\/05\/sahin-yesilyaprak-V7uP-XzqX18-unsplash-1-scaled.jpg?fit=2560%2C1707&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4cGwe-a7","jetpack-related-posts":[],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/posts\/627","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/comments?post=627"}],"version-history":[{"count":5,"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/posts\/627\/revisions"}],"predecessor-version":[{"id":1112,"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/posts\/627\/revisions\/1112"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/media\/635"}],"wp:attachment":[{"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/media?parent=627"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/categories?post=627"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/deberker.com\/archy\/wp-json\/wp\/v2\/tags?post=627"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}