{"id":1873,"date":"2019-07-24T22:10:09","date_gmt":"2019-07-25T06:10:09","guid":{"rendered":"https:\/\/live-cometml.pantheonsite.io\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/"},"modified":"2019-07-24T22:10:09","modified_gmt":"2019-07-25T06:10:09","slug":"codeless-deep-learning-pipelines-with-ludwig-and-comet-ml","status":"publish","type":"post","link":"https:\/\/www.comet.com\/site\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/","title":{"rendered":"Codeless Deep Learning Pipelines with Ludwig and comet.ml"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\">How to use Ludwig and comet.ml together to build powerful deep learning models right in your command line \u2014 using an example text classification model<\/h4>\n\n\n\n<p>&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image wpex-align-middle\"><img decoding=\"async\" class=\"wp-image-1046\" src=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2022\/06\/ludwig-1.png\" alt=\"\" \/><\/figure>\n\n\n\n<p><a href=\"https:\/\/uber.github.io\/ludwig\/\" target=\"_blank\" rel=\"noreferrer noopener\">Ludwig<\/a>\u00a0is a TensorFlow-based toolbox that allows users to train and test deep learning models\u00a0<em>without the need to write code.<\/em><\/p>\n\n\n\n<p>By offering a well-defined,\u00a0<em>codeless\u00a0<\/em>deep learning pipeline from beginning to end, Ludwig enables practitioners and researchers alike to quickly train and test their models and obtain strong baselines to compare experiments against.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>\u201cLudwig helps us build state of the art models without writing code, and by integrating Ludwig with Comet, we can track all of our experiments in a reproducible way, gain visibility, and a better understanding of the research process.\u201d \u2014\u00a0<\/em><strong>Piero Molino, Senior ML \/ NLP Research Scientist at Uber AI Labs and Creator of Ludwig<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p>Ludwig offers CLI commands for preprocessing data, training, issuing predictions, and visualizations. In this post, we\u2019ll show you how to use Ludwig and track your Ludwig experiments with\u00a0<a href=\"http:\/\/bit.ly\/2Jd156C\" target=\"_blank\" rel=\"noreferrer noopener\">comet.ml<\/a>.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>See the Ludwig Github repo\u00a0<a href=\"https:\/\/github.com\/uber\/ludwig\/\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a><\/p>\n<\/blockquote>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" class=\"wp-image-1047\" src=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2022\/06\/setup-1024x636-1.jpg\" alt=\"\" \/>\n<figcaption>Want an image captioning model or visual question answering model quickly?\u00a0<a href=\"https:\/\/uber.github.io\/ludwig\/\" target=\"_blank\" rel=\"noreferrer noopener\">Use Ludwig in these 4 easy steps<\/a>\u00a0to build, train, and evaluate deep learning models.<\/figcaption>\n<\/figure>\n<\/div>\n\n\n\n<p>Here at\u00a0<a href=\"http:\/\/bit.ly\/2Jd156C\" target=\"_blank\" rel=\"noreferrer noopener\">comet.ml<\/a>, we were excited by the potential for Ludwig to fill a void in the machine learning ecosystem. Ludwig\u00a0<em>finally\u00a0<\/em>takes the idea of abstract representations of machine learning models, training, data, and visualizations and turns them into a\u00a0<strong>seamless, executable pipeline from start to finish.<\/strong><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">This means that we can finally spend less time:<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>dealing with data preprocessing for different data types \u2620\ufe0f<\/li>\n<li>meshing different model architectures just to get simple baseline models<\/li>\n<li>writing code to make predictions<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">and more time:<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>getting transparent results<\/li>\n<\/ul>\n\n\n<hr class=\"wp-block-separator is-style-dots\" \/>\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/medium.com\/comet-ml\/comet-ml-partners-with-uber-on-ludwig-5adb802bbdfc\" target=\"_blank\" rel=\"noreferrer noopener\">Integrating Comet with Ludwig<\/a><\/h3>\n\n\n\n<p>We worked with the Ludwig team to\u00a0<a href=\"https:\/\/medium.com\/comet-ml\/comet-ml-partners-with-uber-on-ludwig-5adb802bbdfc\" target=\"_blank\" rel=\"noreferrer noopener\">integrate comet.ml<\/a>\u00a0so that users can track Ludwig-based experiments live as they are training.<\/p>\n\n\n\n<p>There are three main areas where\u00a0<a href=\"http:\/\/bit.ly\/2Jd156C\" target=\"_blank\" rel=\"noreferrer noopener\">comet.ml<\/a>\u00a0complements Ludwig:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Comparing multiple Ludwig experiments:<\/strong>\u00a0Ludwig makes it easy for you to train and iterate through different models and parameters sets. Comet provides an interface to help you keep track of the results and details\u00a0<em>across<\/em>\u00a0those different experiments.<\/li>\n<li><strong>Organized store for your analysis:<\/strong>\u00a0Ludwig allows you to generate cool visualizations around the training process and results. Comet allows you to keep track of those visualizations and automatically associates them with your experiments instead of having to save them somewhere.<\/li>\n<li><strong>Meta-analysis for your experiments:\u00a0<\/strong>You\u2019ll probably do multiple iterations ofyour Ludwig experiments. Tracking them with Comet enables you analyze things like which parameters work in order to build a better model.<\/li>\n<\/ol>\n\n\n\n<p>By running your Ludwig experiment with comet.ml, you can capture your experiment\u2019s:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>code (the command line arguments you used)<\/li>\n<li><strong>live performance charts so you can see the model metrics in real-time (as opposed to waiting until training is done)<\/strong><\/li>\n<li>visualizations you created with Ludwig<\/li>\n<li>environment details (eg. package versions)<\/li>\n<li>history of runs (HTML tab)<\/li>\n<\/ul>\n\n\n\n<p>\u2026and more!<\/p>\n\n\n<hr class=\"wp-block-separator is-style-dots\" \/>\n\n\n<h3 class=\"wp-block-heading\">Running Ludwig with Comet<\/h3>\n\n\n\n<p>1. Install Ludwig for Python (and spacy for English as a dependency since we\u2019re using text features for this example).\u00a0<em>This example has been tested with Python 3.6.<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ pip install ludwig\n$ python -m spacy download en<\/code><\/pre>\n\n\n\n<p><em>If you encounter problems installing\u00a0<\/em><code>gmpy<\/code><em>\u00a0please install\u00a0<\/em><code>libgmp<\/code><em>\u00a0or\u00a0<\/em><code>gmp<\/code><em>. On Debian-based Linux distributions:\u00a0<\/em><code>sudo apt-get install libgmp3-dev<\/code><em>. On MacOS :\u00a0<\/em><code>brew install gmp<\/code><em>.<\/em><\/p>\n\n\n\n<p>2. Install Comet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ pip install comet_ml<\/code><\/pre>\n\n\n\n<p>3. Set up your Comet credentials:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Get your API key at\u00a0<a href=\"http:\/\/bit.ly\/2Jd156C\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.comet.com<\/a><\/li>\n<li>Make that API key available to Ludwig and set which Comet Project you\u2019d like the Ludwig experiment details to report to:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ export COMET_API_KEY=\"...\"\n$ export COMET_PROJECT_NAME=\"...\"<\/code><\/pre>\n\n\n\n<p>4. We recommend that you create a new directory for each Ludwig experiment.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ mkdir experiment1\n$ cd experiment1<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Some background:<\/strong>\u00a0every time you want to create a new model and train it, you will use one of two commands \u2014<br \/>\u2014 train<br \/>\u2014 experiment<br \/>Once you run these commands with the<code><em>--comet<\/em><\/code>\u00a0flag, a\u00a0<code><em>.comet.config<\/em><\/code>\u00a0file is created. This\u00a0<code><em>.comet.config<\/em><\/code>\u00a0file pulls your API key and Comet Project name from the environment variables you set above.<\/p>\n<\/blockquote>\n\n\n\n<p>If you want to run another experiment, it is recommended that you create a new directory.<\/p>\n\n\n\n<p>5.<strong>\u00a0Download the dataset.<\/strong>\u00a0For this example, we will be working on a text classification use case with the\u00a0<a href=\"http:\/\/archive.ics.uci.edu\/ml\/datasets\/Reuters-21578+Text+Categorization+Collection\" target=\"_blank\" rel=\"noreferrer noopener\">Reuters-21578<\/a>\u00a0, a well-known newswire dataset. It only contains 21,578 newswire documents grouped into 6 categories. Two are \u2018big\u2019 categories (many positive documents), two are \u2018medium\u2019 categories, and two are \u2018small\u2019 categories (few positive documents).<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Small categories: heat.csv, housing.csv<\/li>\n<li>Medium categories: coffee.csv, gold.csv<\/li>\n<li>Big categories: acq.csv, earn.csv<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ curl http:\/\/boston.lti.cs.cmu.edu\/classes\/95-865-K\/HW\/HW2\/reuters-allcats-6.zip -o reuters-allcats-6.zip\n$ unzip reuters-allcats-6.zip<\/code><\/pre>\n\n\n\n<p>6. Define the model we wish to build with the input and output features we want. Create a file named\u00a0<code>model_definition.yaml<\/code>\u00a0with these contents:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>input_features:\n    -\n        name: text\n        type: text\n        level: word\n        encoder: parallel_cnn\noutput_features:\n    -\n        name: class\n        type: category<\/code><\/pre>\n\n\n\n<p>7. Train the model with the new\u00a0<code>--comet<\/code>\u00a0flag<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ ludwig experiment --comet --data_csv reuters-allcats.csv \\\n    --model_definition_file model_definition.yaml<\/code><\/pre>\n\n\n\n<p>Once you run this, a Comet experiment will be created.\u00a0<strong>Check your output for that Comet experiment URL and press on that URL.<\/strong><\/p>\n\n\n\n<p>8. In Comet, you\u2019ll be able to see:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>your live model metrics in real-time on the\u00a0<strong>Charts tab<\/strong><\/li>\n<li>the bash command you ran to train your experiment along with any run arguments in the\u00a0<strong>Code tab<\/strong><\/li>\n<li>hyperparameters that Ludwig is using (defaults) in the\u00a0<strong>Hyper parameter tab<\/strong><\/li>\n<\/ul>\n\n\n\n<p>and much more! See this sample experiment\u00a0<a href=\"https:\/\/www.comet.com\/dsblank\/ludwig\/b919068a27014a1b941a1de11c707a0b\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image alignwide\"><img decoding=\"async\" class=\"wp-image-604\" src=\"https:\/\/i0.wp.com\/blog.comet.ml\/wp-content\/uploads\/2019\/10\/ludwig-walkthrough.gif?fit=769%2C530&amp;ssl=1\" alt=\"\" \/>\n<figcaption>Running our example text classification Ludwig experiment with the \u2014 comet flag. You can interact with this Comet experiment\u00a0<a href=\"https:\/\/www.comet.com\/dsblank\/ludwig\/b919068a27014a1b941a1de11c707a0b\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a><\/figcaption>\n<\/figure>\n\n\n\n<p>If you choose to make any visualizations with Ludwig, it\u2019s also possible to upload these visualizations to Comet\u2019s\u00a0<strong>Image Tab<\/strong>\u00a0by running:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ ludwig visualize --comet \\\n    --visualization learning_curves \\\n    --training_statistics \\\n    .\/results\/experiment_run_0\/training_statistics.json<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Now you\u2019re ready to use Ludwig and Comet together to build your deep learning models! Sign up for Comet\u00a0<a href=\"https:\/\/live-cometml.pantheonsite.io\/pricing\/\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>.<\/h4>\n","protected":false},"excerpt":{"rendered":"<p>How to use Ludwig and comet.ml together to build powerful deep learning models right in your command line \u2014 using an example text classification model &nbsp; Ludwig\u00a0is a TensorFlow-based toolbox that allows users to train and test deep learning models\u00a0without the need to write code. By offering a well-defined,\u00a0codeless\u00a0deep learning pipeline from beginning to end, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1876,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"customer_name":"","customer_description":"","customer_industry":"","customer_technologies":"","customer_logo":"","footnotes":""},"categories":[8,9,7],"tags":[],"coauthors":[107],"class_list":["post-1873","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-comet-community-hub","category-product","category-tutorials"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Codeless Deep Learning Pipelines with Ludwig and comet.ml - Comet<\/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:\/\/www.comet.com\/site\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Codeless Deep Learning Pipelines with Ludwig and comet.ml\" \/>\n<meta property=\"og:description\" content=\"How to use Ludwig and comet.ml together to build powerful deep learning models right in your command line \u2014 using an example text classification model &nbsp; Ludwig\u00a0is a TensorFlow-based toolbox that allows users to train and test deep learning models\u00a0without the need to write code. By offering a well-defined,\u00a0codeless\u00a0deep learning pipeline from beginning to end, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.comet.com\/site\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/\" \/>\n<meta property=\"og:site_name\" content=\"Comet\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/cometdotml\" \/>\n<meta property=\"article:published_time\" content=\"2019-07-25T06:10:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2022\/06\/ludwig.png\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"299\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Gideon Mendels\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Cometml\" \/>\n<meta name=\"twitter:site\" content=\"@Cometml\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gideon Mendels\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Codeless Deep Learning Pipelines with Ludwig and comet.ml - Comet","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:\/\/www.comet.com\/site\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/","og_locale":"en_US","og_type":"article","og_title":"Codeless Deep Learning Pipelines with Ludwig and comet.ml","og_description":"How to use Ludwig and comet.ml together to build powerful deep learning models right in your command line \u2014 using an example text classification model &nbsp; Ludwig\u00a0is a TensorFlow-based toolbox that allows users to train and test deep learning models\u00a0without the need to write code. By offering a well-defined,\u00a0codeless\u00a0deep learning pipeline from beginning to end, [&hellip;]","og_url":"https:\/\/www.comet.com\/site\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/","og_site_name":"Comet","article_publisher":"https:\/\/www.facebook.com\/cometdotml","article_published_time":"2019-07-25T06:10:09+00:00","og_image":[{"width":700,"height":299,"url":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2022\/06\/ludwig.png","type":"image\/png"}],"author":"Gideon Mendels","twitter_card":"summary_large_image","twitter_creator":"@Cometml","twitter_site":"@Cometml","twitter_misc":{"Written by":"Gideon Mendels","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.comet.com\/site\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/#article","isPartOf":{"@id":"https:\/\/www.comet.com\/site\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/"},"author":{"name":"engineering@atre.net","@id":"https:\/\/www.comet.com\/site\/#\/schema\/person\/550ac35e8e821db8064c5bd1f0a04e6b"},"headline":"Codeless Deep Learning Pipelines with Ludwig and comet.ml","datePublished":"2019-07-25T06:10:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.comet.com\/site\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/"},"wordCount":898,"publisher":{"@id":"https:\/\/www.comet.com\/site\/#organization"},"image":{"@id":"https:\/\/www.comet.com\/site\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/#primaryimage"},"thumbnailUrl":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2022\/06\/ludwig.png","articleSection":["Comet Community Hub","Product","Tutorials"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.comet.com\/site\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/","url":"https:\/\/www.comet.com\/site\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/","name":"Codeless Deep Learning Pipelines with Ludwig and comet.ml - Comet","isPartOf":{"@id":"https:\/\/www.comet.com\/site\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.comet.com\/site\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/#primaryimage"},"image":{"@id":"https:\/\/www.comet.com\/site\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/#primaryimage"},"thumbnailUrl":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2022\/06\/ludwig.png","datePublished":"2019-07-25T06:10:09+00:00","breadcrumb":{"@id":"https:\/\/www.comet.com\/site\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.comet.com\/site\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.comet.com\/site\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/#primaryimage","url":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2022\/06\/ludwig.png","contentUrl":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2022\/06\/ludwig.png","width":700,"height":299,"caption":"Ludwig Logo"},{"@type":"BreadcrumbList","@id":"https:\/\/www.comet.com\/site\/blog\/codeless-deep-learning-pipelines-with-ludwig-and-comet-ml\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.comet.com\/site\/"},{"@type":"ListItem","position":2,"name":"Codeless Deep Learning Pipelines with Ludwig and comet.ml"}]},{"@type":"WebSite","@id":"https:\/\/www.comet.com\/site\/#website","url":"https:\/\/www.comet.com\/site\/","name":"Comet","description":"Build Better Models Faster","publisher":{"@id":"https:\/\/www.comet.com\/site\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.comet.com\/site\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.comet.com\/site\/#organization","name":"Comet ML, Inc.","alternateName":"Comet","url":"https:\/\/www.comet.com\/site\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.comet.com\/site\/#\/schema\/logo\/image\/","url":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/01\/logo_comet_square.png","contentUrl":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/01\/logo_comet_square.png","width":310,"height":310,"caption":"Comet ML, Inc."},"image":{"@id":"https:\/\/www.comet.com\/site\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/cometdotml","https:\/\/x.com\/Cometml","https:\/\/www.youtube.com\/channel\/UCmN63HKvfXSCS-UwVwmK8Hw"]},{"@type":"Person","@id":"https:\/\/www.comet.com\/site\/#\/schema\/person\/550ac35e8e821db8064c5bd1f0a04e6b","name":"engineering@atre.net","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.comet.com\/site\/#\/schema\/person\/image\/027c18177377edf459980f0cfb83706c","url":"https:\/\/secure.gravatar.com\/avatar\/d002a459a297e0d1779329318029aee19868c312b3e1f3c9ec9b3e3add2740de?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d002a459a297e0d1779329318029aee19868c312b3e1f3c9ec9b3e3add2740de?s=96&d=mm&r=g","caption":"engineering@atre.net"},"sameAs":["https:\/\/live-cometml.pantheonsite.io"],"url":"https:\/\/www.comet.com\/site\/blog\/author\/engineeringatre-net\/"}]}},"_links":{"self":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts\/1873","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/comments?post=1873"}],"version-history":[{"count":0,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts\/1873\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/media\/1876"}],"wp:attachment":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/media?parent=1873"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/categories?post=1873"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/tags?post=1873"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/coauthors?post=1873"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}