CINXE.COM
Cookie Policy | Epoch AI
<!DOCTYPE html> <html lang="en"><head> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-TB9Q2NN5');</script> <!-- End Google Tag Manager --> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Begin Jekyll SEO tag v2.8.0 --> <meta name="generator" content="Jekyll v4.2.2" /> <meta property="og:title" content="Cookie Policy" /> <meta property="og:locale" content="en_US" /> <link rel="canonical" href="https://epoch.ai/cookies" /> <meta property="og:url" content="https://epoch.ai/cookies" /> <meta property="og:site_name" content="Epoch AI" /> <meta property="og:image" content="https://epoch.ai/assets/images/thumbnails/epoch-ai.png" /> <meta property="og:type" content="website" /> <meta name="twitter:card" content="summary_large_image" /> <meta property="twitter:image" content="https://epoch.ai/assets/images/thumbnails/epoch-ai.png" /> <meta property="twitter:title" content="Cookie Policy" /> <script type="application/ld+json"> {"@context":"https://schema.org","@type":"WebPage","headline":"Cookie Policy","image":"https://epoch.ai/assets/images/thumbnails/epoch-ai.png","url":"https://epoch.ai/cookies"}</script> <!-- End Jekyll SEO tag --> <title>Cookie Policy | Epoch AI</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.8.1/font/bootstrap-icons.css" crossorigin="anonymous"> <link rel="stylesheet" href="/assets/css/micromodal.css"> <link rel="shortcut icon" type="image/png" href="/assets/images/favicon.png" > <link rel="icon" type="image/x-icon" href="/assets/images/favicon.ico" > <link rel="icon" type="image/svg+xml" href="/assets/images/favicon.svg" > <link rel="alternate" type="application/rss+xml" title="Epoch AI" href="/atom.xml" /> <!-- MathJax --> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ tex2jax: { inlineMath: [ ['$','$'], ["\\(","\\)"] ], processEscapes: true }, }); </script> <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3.0.1/es5/tex-mml-chtml.js"></script> <script async src="https://ga.jspm.io/npm:es-module-shims@1.8.2/dist/es-module-shims.js"></script> <link rel="stylesheet" href="/assets/css/main.css"> <script src="/assets/js/micromodal.min.js"></script> <!-- Copy buttons --> <script src="/assets/js/clipboard.min.js"></script> <script> 'use strict'; // TODO Temporary, compress function addCopyButton(node) { let copyButton; if (node.tagName == 'PRE') { copyButton = document.createElement('button'); node.parentElement.appendChild(copyButton); node.parentElement.classList.add('copiable-wrapper'); node.classList.add('copy-target'); copyButton.classList.add('copy-button'); //copyButton.innerHTML = '<i class="bi-clipboard copy-icon"></i>'; copyButton.innerHTML = '<img class="copy-icon" src="/assets/images/icons/copy-icon.svg">'; } else { let wrapper = document.createElement('div'); wrapper.classList.add('copiable-wrapper'); node.parentNode.insertBefore(wrapper, node); wrapper.appendChild(node); copyButton = document.createElement('button'); node.parentElement.appendChild(copyButton); node.parentElement.classList.add('copiable-wrapper'); node.classList.add('copy-target'); copyButton.classList.add('copy-button'); //copyButton.innerHTML = '<i class="bi-clipboard copy-icon"></i>'; copyButton.innerHTML = '<img class="copy-icon" src="/assets/images/icons/copy-icon.svg">'; } copyButton.querySelector('.copy-icon').style.backgroundColor = node.style.backgroundColor; let clipboard = new ClipboardJS(copyButton, { target: function(trigger) { return trigger.parentElement.querySelector('.copy-target'); }, }); let tooltip = tippy(copyButton, { content: 'Copied', theme: 'epoch-default', trigger: 'manual', placement: 'left', appendTo: copyButton, arrow: false, offset: [1, -1], }); clipboard.on('success', function(e) { e.clearSelection(); let icon = e.trigger.querySelector('.copy-icon'); icon.classList.remove('bi-clipboard'); icon.classList.add('bi-clipboard-check'); tooltip.show(); setTimeout(() => { tooltip.hide(); icon.classList.remove('bi-clipboard-check'); icon.classList.add('bi-clipboard'); }, 1200); }); clipboard.on('error', function(e) { e.clearSelection(); }); } window.addEventListener('DOMContentLoaded', () => { for (let element of document.querySelectorAll('pre, .boxed-text')) { addCopyButton(element); } }); </script> <script> 'use strict'; let today = new Date(); let currentDateStr = today.toISOString().split('T')[0]; let currentYearStr = today.getUTCFullYear().toString(); // Format: 31 Jul 2021 let currentDateCitationStr = today.getUTCDate() + ' ' + [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ][today.getUTCMonth()] + ' ' + currentYearStr; document.addEventListener('DOMContentLoaded', function() { injectCurrentDates(); }); function injectCurrentDates(container=document) { for (let node of container.querySelectorAll('.current-date-unfilled')) { if (node.dataset.citationFormat == 'true') { node.innerHTML = currentDateCitationStr; } else { node.innerHTML = currentDateStr; } node.classList.remove('current-date-unfilled'); } for (let node of container.querySelectorAll('.current-year-unfilled')) { node.innerHTML = currentYearStr; node.classList.remove('current-year-unfilled'); } } </script> <script> 'use strict'; let handleSelectableLinks; document.addEventListener('DOMContentLoaded', function() { let onTouchDevice = matchMedia('(hover: none)').matches; // // Jump on click const delta = 10; let mouseAnchor = {x: null, y: null}; handleSelectableLinks = function(container) { for (let node of container.querySelectorAll('[data-selectable-link]')) { node.addEventListener('mousedown', (e) => { mouseAnchor.x = e.pageX; mouseAnchor.y = e.pageY; }); node.addEventListener('mouseup', (e) => { let dist = (mouseAnchor.x - e.pageX)**2 + (mouseAnchor.y - e.pageY)**2; if (dist > delta) { return; } let clickEvent = new MouseEvent("click", e) node.dispatchEvent(clickEvent); if (e.target.tagName == 'A' || clickEvent.defaultPrevented) { return; } if (e.target.classList.contains('uncertainty') || e.target.classList.contains('info-icon')) { return } // True click! Follow the link. if (node.dataset.newTab || e.ctrlKey) { window.open(node.dataset.selectableLink, '_blank'); } else { window.location.href = node.dataset.selectableLink; } }); } } handleSelectableLinks(document); }); </script> <script> 'use strict'; document.addEventListener('DOMContentLoaded', () => { document.body.addEventListener('click', (e) => { if (e.target.tagName === 'A' && e.target.href.startsWith(window.location.origin)) { // Freeze the navigation bar until we stop scrolling freezeNavBar(); unfreezeNavBarOnScrollStop(); } }); }); </script> <!-- Google tag (gtag.js) --> <!-- <script async src="https://www.googletagmanager.com/gtag/js?id=G-2JLB2RT2V0"></script> --> <!-- <script> (function(w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl + '>m_auth=>m_preview=>m_cookies_win=x'; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', 'G-2JLB2RT2V0'); </script> --> <script> /*This function will load script and call the callback once the script has loaded*/ function loadScriptAsync(scriptSrc, callback) { if (typeof callback !== 'function') { throw new Error('Not a valid callback for async script load'); } var script = document.createElement('script'); script.onload = callback; script.src = scriptSrc; document.head.appendChild(script); } /* This is the part where you call the above defined function and "call back" your code which gets executed after the script has loaded */ loadScriptAsync('https://www.googletagmanager.com/gtag/js?id=G-2JLB2RT2V0', function () { window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('consent', 'default', { 'ad_storage': 'denied', 'analytics_storage': 'granted', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'wait_for_update': 500, }); gtag('js', new Date()); gtag('config', 'G-2JLB2RT2V0', { 'anonymize_ip': true }); }) // Handle user consent function setConsent(consent) { window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('consent', 'update', { 'ad_storage': consent ? 'granted' : 'denied', 'analytics_storage': consent ? 'granted' : 'denied', 'ad_user_data': consent ? 'granted' : 'denied', 'ad_personalization': consent ? 'granted' : 'denied', }); } </script> <!-- Microsoft Clarity tracking code --> <script type="text/javascript"> (function(c,l,a,r,i,t,y){ c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); })(window, document, "clarity", "script", "mrxdks5ty9"); </script> <script> 'use strict'; // Deobfuscate email addresses function addMailDeobfuscator(element) { element.addEventListener('mouseover', () => element.href = 'mailto:' + atob(element.dataset.contact)); element.addEventListener('focus', () => element.href = 'mailto:' + atob(element.dataset.contact)); } window.addEventListener('load', () => { for (let element of document.querySelectorAll("[data-contact]")) { addMailDeobfuscator(element); if (element.dataset.contactSetText == "true") { element.innerHTML = atob(element.dataset.contact); } } }); </script> <script src="https://unpkg.com/@popperjs/core@2.11.2"></script> <script src="https://unpkg.com/tippy.js@6.2.6"></script> <link rel="stylesheet" href="/assets/css/handorgel.min.css"> <script src="/assets/js/handorgel.min.js"></script> <script> "use strict"; let getAccordionByNode; let makeFoldable; let makeUnfoldable; let followInternalLink; { let accordions = []; let nodeToAccordion = new Map(); getAccordionByNode = function(node) { return nodeToAccordion.get(node); }; makeUnfoldable = function(container) { if (!container.classList.contains('fold-container')) { return; } container.classList.remove('fold-container'); for (let accordion of accordions) { if (accordion.element === container) { accordion.destroy(); accordions.splice(accordions.indexOf(accordion), 1); break; } } nodeToAccordion.delete(handorgelDiv); let nodes = []; for (let handorgelHeader of container.querySelectorAll('.handorgel__header')) { let header = document.createElement(handorgelHeader.dataset.headerType); handorgelHeader.querySelector('handorgel__header__icon').remove(); header.innerHTML = handorgelHeader.querySelector('.handorgel__header__button').innerHTML; header.id = handorgelHeader.id; let content = handorgelHeader.nextElementSibling; let section = document.createElement('div'); section.appendChild(header); for (let child of content.children) { section.appendChild(child); } section.classList.add('folded-section'); nodes.push(section); } container.innerHTML = ''; for (let node of nodes) { container.appendChild(node); } }; makeFoldable = function(container, openByDefault=false) { if (container.classList.contains('fold-container')) { return; } container.classList.add('fold-container'); let handorgelDiv = document.createElement('div'); handorgelDiv.classList.add('handorgel'); let openByDefaultArray = []; // fold-wise for (let section of container.querySelectorAll('.folded-section')) { let header = section.querySelector('h1,h2,h3,h4,h5,h6'); let button = document.createElement('button'); if (container.dataset.foldOpenIcon) { button.innerHTML = header.innerHTML + ' <img class="handorgel__header__icon" src="' + container.dataset.foldOpenIcon + '">'; } else { button.innerHTML = header.innerHTML + ' <img class="handorgel__header__icon" src="/assets/images/icons/chevron-down.svg">'; } openByDefaultArray.push(section.dataset.openByDefault); button.classList.add('handorgel__header__button'); button.id = header.id; // Handorgel overwrites the h* id :_( header.classList.add('handorgel__header'); header.innerHTML = ''; header.dataset.headerType = header.tagName; header.appendChild(button); handorgelDiv.appendChild(header); let content = document.createElement('div'); content.classList.add('handorgel__content'); for (let clazz of section.classList) { content.classList.add(clazz); } if (openByDefault) { content.dataset.open = 'true'; } content.dataset.close = true; let innerDiv = document.createElement('div'); content.appendChild(innerDiv); for (let element of [...section.children]) { innerDiv.appendChild(element); } handorgelDiv.appendChild(content); button.addEventListener('click', () => { // If the section header goes out of view, scroll it back into view setTimeout(() => { if (header.getBoundingClientRect().top < 0) { // Get scroll margin let margin = parseInt(getComputedStyle(button).scrollMarginTop); //header.scrollIntoView({behavior: 'smooth'}); window.scrollBy({ top: header.getBoundingClientRect().top - margin, behavior: 'smooth', }); } }, 400); }); } container.innerHTML = ''; container.appendChild(handorgelDiv); let options = { multiSelectable: container.dataset.multiSelectable != 'false', collapsible: container.dataset.collapsible != 'false', initialOpenTransition: false, }; let accordion = new handorgel(handorgelDiv, options); nodeToAccordion.set(handorgelDiv, accordion); accordions.push(accordion); for (let content of document.querySelectorAll('.handorgel .handorgel__content')) { // To remove margins markTopNodes(content.children[0]); markBottomNodes(content.children[0]); } accordion.on('fold:open', function (e) { setTimeout(() => { // The browser won't play the animation for the margin or padding bottom // starting from height 0, so we need to wait for the height to change // before we can set the margin/padding. e.content.classList.add('expanded'); if (container.dataset.foldCloseIcon) { e.button.querySelector('.handorgel__header__icon').src = container.dataset.foldCloseIcon; } }, 0); }); accordion.on('fold:close', function (e) { e.content.classList.remove('expanded'); if (container.dataset.foldOpenIcon) { e.button.querySelector('.handorgel__header__icon').src = container.dataset.foldOpenIcon; } }); // Open the first one for (let i = 0; i < accordion.folds.length; i++) { let fold = accordion.folds[i]; if (openByDefaultArray[i]) { fold.open({transition: false}); } } }; function markTopNodes(node) { node.classList.add('top-node'); if (node.children.length > 0) { markTopNodes(node.children[0]); } } function markBottomNodes(node) { node.classList.add('bottom-node'); if (node.children.length > 0) { markBottomNodes(node.children[node.children.length - 1]); } } function scrollTo(node) { node.scrollIntoView({ behavior: 'smooth', }); } function openFold(accordion, fold, scrollTarget) { if (!scrollTarget) scrollTarget = fold.header; if (!fold.expanded) { accordion.once('fold:opened', (f) => { }); fold.open({transition: false}); } } followInternalLink = function(href) { let id = href.slice(1); // Is it a fold? for (let accordion of accordions) { for (let fold of accordion.folds) { if (fold.button.id == id) { openFold(accordion, fold); return true; } } } // Is it _inside_ a fold? let element = document.getElementById(id); if (!element) return false; let node = element; while (node) { for (let accordion of accordions) { for (let fold of accordion.folds) { if (fold.button == node || fold.content == node) { openFold(accordion, fold, element); return true; } } } node = node.parentElement; } return false; }; document.addEventListener('click', (e) => { if (e.target.tagName == 'A' && e.target.hasAttribute('href') && !e.shiftKey && !e.ctrlKey && !e.metaKey && !e.altKey) { const newUrl = new URL(e.target.href); const currentUrl = new URL(window.location.href); if (newUrl.pathname == currentUrl.pathname && newUrl.hash) { followInternalLink(newUrl.hash); } } }); // On state restoration, follow the link window.addEventListener('popstate', (e) => { const newUrl = new URL(window.location.href); if (newUrl.hash) { followInternalLink(newUrl.hash); } }); } </script> <script src="/assets/js/footnotes.js"></script> <link rel="stylesheet" href="/assets/css/content-page.css"> </head> <noscript> <style> body { opacity: 1 !important; } </style> </noscript> <body style="opacity: 0"><script src="/assets/js/headroom.min.js"></script> <script src="/assets/js/dist/epoch-ui.js"></script> <div id="top-nav-bar"> <div class="top-strip"> <div class="navigation"> <div class="logo-container"> <a class="logo" href="/"> <div class="round"> <img class="logo-normal" src="/assets/images/epoch-full-standard.svg" alt="Epoch AI's logo"> <img class="logo-white" src="/assets/images/epoch-full-white.svg" alt="Epoch AI's logo"> </div> </a> </div> <div class="wide-menu"> <div class="menu-item "> <a href="/blog" data-submenu-id="Publications" class="menu-item-link"> <span class="menu-item-label">Publications </span> </a> </div> <div class="menu-item "> <a href="/gradient-updates" data-submenu-id="Gradient Updates" class="menu-item-link"> <span class="menu-item-label">Gradient Updates </span> </a> </div> <div class="menu-item has-dropdown"> <a href="#" data-submenu-id="Data & Resources" class="menu-item-link"> <span class="menu-item-label">Data & Resources <svg width="13" height="9" class="chevron" viewBox="0 0 13 9" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M0.5 1L6.5 7.5L12.5 1" stroke="#07171A" stroke-linecap="round" /> </svg></span> </a> <div class="submenu" data-submenu-id="Data & Resources"> <a href="/data" class="submenu-item">Data on AI</a> <a href="/trends" class="submenu-item">Key Trends & Insights</a> <a href="/data-insights" class="submenu-item">Data Insights</a> </div> </div> <div class="menu-item has-dropdown"> <a href="#" data-submenu-id="Projects" class="menu-item-link"> <span class="menu-item-label">Projects <svg width="13" height="9" class="chevron" viewBox="0 0 13 9" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M0.5 1L6.5 7.5L12.5 1" stroke="#07171A" stroke-linecap="round" /> </svg></span> </a> <div class="submenu" data-submenu-id="Projects"> <a href="/frontiermath" class="submenu-item">FrontierMath</a> <a href="/tools/distributed-training" class="submenu-item">Distributed Training</a> </div> </div> <div class="menu-item has-dropdown"> <a href="#" data-submenu-id="About" class="menu-item-link"> <span class="menu-item-label">About <svg width="13" height="9" class="chevron" viewBox="0 0 13 9" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M0.5 1L6.5 7.5L12.5 1" stroke="#07171A" stroke-linecap="round" /> </svg></span> </a> <div class="submenu" data-submenu-id="About"> <a href="/about" class="submenu-item">About Us</a> <a href="/research" class="submenu-item">About Our Research</a> <a href="/careers" class="submenu-item">Careers</a> <a href="/support-us" class="submenu-item">Support Us</a> </div> </div> <div class="menu-item "> <a href="mailto:info@epoch.ai" data-submenu-id="Contact" class="menu-item-link"> <span class="menu-item-label">Contact </span> </a> </div> <a href="/search" class="menu-item search-menu-item"> <div class="loupe-container"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M14.1931 5.58187C16.525 7.91369 16.525 11.6943 14.1931 14.0261C11.8613 16.358 8.08069 16.358 5.74887 14.0261C3.41704 11.6943 3.41704 7.91369 5.74887 5.58187C8.08069 3.25005 11.8613 3.25005 14.1931 5.58187" stroke="#091D21" stroke-linecap="round" stroke-linejoin="round"/> <path d="M14.1501 14.06L20.0001 19.99" stroke="#091D21" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> </a> </div> <div class="narrow-menu"> <div class="narrow-menu-contents"> <div class="narrow-menu-bundle"> <a href="/search" class="menu-item search-menu-item"> <div class="loupe-container"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M14.1931 5.58187C16.525 7.91369 16.525 11.6943 14.1931 14.0261C11.8613 16.358 8.08069 16.358 5.74887 14.0261C3.41704 11.6943 3.41704 7.91369 5.74887 5.58187C8.08069 3.25005 11.8613 3.25005 14.1931 5.58187" stroke="#091D21" stroke-linecap="round" stroke-linejoin="round"/> <path d="M14.1501 14.06L20.0001 19.99" stroke="#091D21" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> </a> <div id="open-menu-button" class=" narrow-menu-container"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M3 12H21M3 6H21M3 18H21" stroke="#162B32" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> </div> </div> </div> </div> </div> </div> <div class="sidebar"> <div class="menu-header"> <div class="logo-container"> <a class="logo" href="/"> <div class="round"> <img class="logo-normal" src="/assets/images/epoch-full-standard.svg" alt="Epoch AI's logo"> <img class="logo-white" src="/assets/images/epoch-full-white.svg" alt="Epoch AI's logo"> </div> </a> </div> <button class="close-button"> <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M13 1L1 13M1 1L13 13" stroke="#162B32" stroke-linecap="round" stroke-linejoin="round"/> </svg> </button> </div> <div class="menu-list-container"> </div> </div> <div class="sidebar-overlay"></div> <script> 'use strict'; let addNavBarAnimationListener; let addNavBarDisplacement; let freezeNavBar = null; let unfreezeNavBar = null; let unfreezeNavBarOnScrollStop = null; document.documentElement.style.setProperty('--current-header-height', '64px'); let navBarHeight = 64; { // Animates an element between two points, for the nav bar // TODO: Maybe we should have used a library class RangeAnimator { constructor(config) { let defaults = { range: [0, 1], durationMs: 5000, onUpdate: (offset) => {}, }; this.config = {...defaults, ...config}; this.alpha = 0; // current position in the range, from 0 to 1 this.targetAlpha = 0; } // Move smoothly to the start position moveToStart() { this.targetAlpha = 0; this.move(); } // Move smoothly to the end position moveToEnd() { this.targetAlpha = 1; this.move(); } // Move instantaneously to the start position setToStart() { this.targetAlpha = 0; this.setAlpha(0); } // Move instantaneously to the end position setToEnd() { this.targetAlpha = 1; this.setAlpha(1); } setAlpha(alpha) { if (alpha < 0) alpha = 0; if (alpha > 1) alpha = 1; this.alpha = alpha; let offset = this.config.range[0] + (this.config.range[1] - this.config.range[0]) * this.alpha; this.config.onUpdate(offset); } // Move alpha towards targetAlpha move() { if (!this.animating) { this.animating = true; let prevT = Date.now(); function update(t) { let dt = t - prevT; prevT = t; let newAlpha = this.alpha + dt / this.config.durationMs * Math.sign(this.targetAlpha - this.alpha); this.setAlpha(newAlpha); if (this.alpha != this.targetAlpha) { requestAnimationFrame(update.bind(this)); } else { this.animating = false; } } requestAnimationFrame(update.bind(this)); } } } let animationNavBarCallbacks = []; addNavBarAnimationListener = (callback) => { animationNavBarCallbacks.push(callback); }; addNavBarAnimationListener((offset) => { let height = navBarHeight + offset; document.documentElement.style.setProperty('--current-header-height', `${height}px`); }) addNavBarDisplacement = (node) => { function update() { let navBar = document.getElementById('top-nav-bar'); let container = node.parentElement; let navBarBounds = navBar.getBoundingClientRect(); let containerBounds = container.getBoundingClientRect(); let effectiveNavBarHeight = navBarBounds.bottom; let displacement = navBarBounds.bottom - containerBounds.top; if (displacement < 0) displacement = 0; if (displacement > effectiveNavBarHeight) displacement = effectiveNavBarHeight; node.style.setProperty('--displacement', `${displacement}px`); } addNavBarAnimationListener(update); update(); }; document.addEventListener("DOMContentLoaded", (event) => { let navBar = document.getElementById('top-nav-bar'); let animator = new RangeAnimator({ range: [0, -navBarHeight], durationMs: 200, onUpdate: (offset) => { navBar.style.transform = `translateY(${offset}px)`; for (let callback of animationNavBarCallbacks) { callback(offset); } }, }); let innerNavBar = document.getElementById('inner-nav-bar'); if (innerNavBar) { function updateInnerNavBar() { const navBarBottom = navBar.getBoundingClientRect().bottom; innerNavBar.style.top = `${navBarBottom}px`; } // Move sub navigation bars when the main nav bar moves up and down addNavBarAnimationListener((offset) => { updateInnerNavBar(); }); // Listen for changes in the nav bar position document.addEventListener('scroll', () => { updateInnerNavBar(); }); } let toc = document.querySelector('.toc'); if (toc) { let tocNavContainer = document.querySelector('.nav-container'); let tocListContainer = document.querySelector('.toc-list-container'); let baseTop = parseFloat(getComputedStyle(tocNavContainer).top); function update() { let navBarBottom = navBar.getBoundingClientRect().bottom; if (innerNavBar) { navBarBottom = Math.max(navBarBottom, innerNavBar.getBoundingClientRect().bottom); } tocNavContainer.style.top = `${baseTop + navBarBottom}px`; tocNavContainer.style.setProperty('--displacement', `${navBarBottom}px`); // Instantaneous transition tocListContainer.style.transition = "none"; setTimeout(() => { tocListContainer.style.transition = null; }); } addNavBarAnimationListener(update); if (innerNavBar) { document.addEventListener('scroll', update); } update(); } let fixed = false; let headroom = new Headroom(navBar, { offset: 81, tolerance: { up: 50, down: 0, }, onPin: () => { if (!fixed) { animator.moveToStart(); } }, onUnpin: () => { if (!fixed) { animator.moveToEnd(); } }, onTop : () => { animator.setToStart(); fixed = true; }, onNotTop : () => { fixed = false; }, }); headroom.init(); freezeNavBar = () => { headroom.freeze(); }; unfreezeNavBar = () => { headroom.unfreeze(); }; // Burger menu let narrowMenuContents = navBar.querySelector('.narrow-menu-contents'); let closeMenu = document.getElementById('close-menu-button'); // Handle opening and closing the top navigation bar let topNavBar = document.getElementById("top-nav-bar"); let searchOverlay = document.getElementById("search-overlay"); searchOverlay.addEventListener('enter-fullscreen', () => { headroom.unfreeze(); document.querySelector('#top-nav-bar .narrow-menu').classList.remove('open'); }); searchOverlay.addEventListener('closed', () => { onSearchClosed(); }); topNavBar.querySelectorAll('.search-menu-item').forEach(searchItem => searchItem.addEventListener("click", (e) => { let modifier = (e.shiftKey || e.ctrlKey || e.metaKey || e.altKey); if (!searchOverlay.classList.contains('fullscreen') && !modifier) { e.preventDefault(); let opened = searchOverlay.classList.contains("opened"); if (opened) { closeSearch(); } else { openSearch(); } } })); document.body.addEventListener('keydown', (e) => { if (e.key == "Escape") { if (!searchOverlay.classList.contains("fullscreen")) { closeSearch(); } } }); function openSearch() { headroom.pin(); headroom.freeze(); searchOverlay.dispatchEvent(new CustomEvent("open")); } function closeSearch() { searchOverlay.dispatchEvent(new CustomEvent("close")); onSearchClosed(); } }); let prevScroll = 0; unfreezeNavBarOnScrollStop = function() { prevScroll = window.scrollY; setTimeout(unfreezeNavBarOnScrollStopAux, 100); } function unfreezeNavBarOnScrollStopAux() { let currentScroll = window.scrollY; if (prevScroll == currentScroll) { unfreezeNavBar(); } else { prevScroll = currentScroll; setTimeout(unfreezeNavBarOnScrollStopAux, 100); } } } </script> <script> // Store navigation data in a JavaScript object const menuData = [{"label":"Publications","url":"/blog"},{"label":"Gradient Updates","url":"/gradient-updates"},{"label":"Data & Resources","subitems":[{"label":"Data on AI","url":"/data"},{"label":"Key Trends & Insights","url":"/trends"},{"label":"Data Insights","url":"/data-insights"}]},{"label":"Projects","subitems":[{"label":"FrontierMath","url":"/frontiermath","subitems":[{"label":"Overview","url":"/frontiermath"},{"label":"The Benchmark","url":"/frontiermath/the-benchmark"},{"label":"Expert Perspectives","url":"/frontiermath/expert-perspectives"},{"label":"Benchmark Problems","url":"/frontiermath/benchmark-problems"},{"label":"Paper","external":true,"url":"https://arxiv.org/abs/2411.04872"}]},{"label":"Distributed Training","url":"/tools/distributed-training"}]},{"label":"About","subitems":[{"label":"About Us","url":"/about"},{"label":"About Our Research","url":"/research"},{"label":"Careers","url":"/careers"},{"label":"Support Us","url":"/support-us"}]},{"label":"Contact","url":"mailto:info@epoch.ai"}]; document.addEventListener("DOMContentLoaded", () => { const menuContainer = document.querySelector(".menu-list-container"); const sidebar = document.querySelector(".sidebar"); const sidebarOverlay = document.querySelector(".sidebar-overlay"); const openMenuBtn = document.querySelector("#open-menu-button"); const closeMenuBtn = document.querySelector(".sidebar .close-button"); const searchOverlay = document.getElementById("search-overlay"); const searchButton = document.querySelector(".wide-menu .search-menu-item"); const currentPath = window.location.pathname; // Function to show sidebar function showSidebar() { // Close search if it's open if (searchOverlay && document.location.pathname != "/search") { // Remove fullscreen class searchOverlay.classList.remove("fullscreen"); // Dispatch close event searchOverlay.dispatchEvent(new CustomEvent("close")); // Reset current menu item const currentDir = document.querySelector(".current-dir"); if (currentDir) { currentDir.classList.add("current-menu-item"); } document.querySelector(".search-menu-item")?.classList.remove("current-menu-item"); } sidebar.style.transform = "translateX(0)"; sidebarOverlay.style.display = "block"; document.body.style.overflow = "hidden"; } // Function to hide sidebar function hideSidebar() { sidebar.style.transform = "translateX(100%)"; sidebarOverlay.style.display = "none"; document.body.style.overflow = ""; } // Function to check window width and hide sidebar if needed function checkWindowWidth() { if (window.innerWidth >= 1120) { hideSidebar(); } } // Event listeners for sidebar controls openMenuBtn?.addEventListener("click", showSidebar); closeMenuBtn?.addEventListener("click", hideSidebar); sidebarOverlay?.addEventListener("click", hideSidebar); // Watch window resize window.addEventListener("resize", checkWindowWidth); // Initial check checkWindowWidth(); function extractMenuSteps(menu, parentStep = null, steps = {}, stepTitle = "Root") { const currentStep = { title: stepTitle, parent: parentStep, items: menu.map(item => ({ label: item.label, url: item.url || null, external: item.external || false, hasSubitems: !!item.subitems })) }; const stepId = parentStep ? `${parentStep}-${stepTitle}` : stepTitle; steps[stepId] = currentStep; menu.forEach(item => { if (item.subitems) { extractMenuSteps(item.subitems, stepId, steps, item.label); } }); return steps; } const steps = extractMenuSteps(menuData); function renderMenu(steps) { Object.entries(steps).forEach(([key, step]) => { const menuList = document.createElement("div"); menuList.classList.add("menu-list"); menuList.dataset.parentId = step.parent; menuList.dataset.levelId = key; if (step.parent) { const menuTitle = document.createElement("div"); menuTitle.classList.add("menu-list-title"); menuTitle.innerHTML = ` <a href="javascript:void(0)" class="menu-item"> <svg class="chevron" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M9 18L15 12L9 6" stroke="#07171A" stroke-linecap="round" stroke-linejoin="round"/> </svg> <span class="menu-item-label">${step.title}</span> </a> `; menuList.appendChild(menuTitle); } const navUl = document.createElement("ul"); step.items.forEach(item => { let submenu = null let menuItem = `` if (item.hasSubitems) { if (step.parent) { submenu = step.parent + "-" + step.title + "-" + item.label; } else { submenu = step.title + "-" + item.label; } menuItem = ` <li> <a href="javascript:void(0)" class="menu-item" data-submenu-id="${submenu}"> <span class="menu-item-label">${item.label}</span> <svg class="chevron" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M9 18L15 12L9 6" stroke="#07171A" stroke-linecap="round" stroke-linejoin="round"/> </svg> </a> </li> ` } else { menuItem = ` <li> <a href="${item.url}" class="menu-item"> <span class="menu-item-label">${item.label}</span> </a> </li> ` } navUl.innerHTML += menuItem; }); menuList.appendChild(navUl); menuContainer.appendChild(menuList); }); } renderMenu(steps); const currentDir = "/cookies"; const currentPage = "/cookies"; const menus = document.querySelectorAll(".menu-list"); // Function to find menu ID containing a specific URL function findMenuIdForUrl(url, menuData, path = ["Root"]) { // Check if this is a directory URL (ends with /) const isDirectory = url.endsWith('/'); const urlToMatch = isDirectory ? url : url + '/'; // Check direct items in this level for (const item of menuData) { const itemUrl = item.url?.endsWith('/') ? item.url : item.url + '/'; // If URL matches this item if (itemUrl === urlToMatch && !item.subitems) { return path.join("-"); } // If this item has subitems, recursively check them if (item.subitems) { const newPath = [...path, item.label]; const foundId = findMenuIdForUrl(url, item.subitems, newPath); if (foundId) return foundId; } } return null; } // Find the correct menu ID based on current page or directory let currentMenuId = findMenuIdForUrl(currentPage, menuData) || "Root"; // Function to reset menu classes function resetMenuClasses() { menus.forEach(menu => { menu.classList.remove("active", "prev", "next"); }); } function activateMenu(menuId) { resetMenuClasses(); const activateMenu = steps[menuId]; menus.forEach(menu => { if (menu.dataset.levelId === menuId) { menu.classList.add("active"); } else if (menu.dataset.levelId === activateMenu.parent) { menu.classList.add("prev"); } else if (menu.dataset.parentId === menuId) { menu.classList.add("next"); } else { menu.classList.add("next"); } }); currentMenuId = menuId; } menuContainer.addEventListener("click", event => { const submenuLink = event.target.closest(".menu-item[data-submenu-id]"); if (submenuLink) { const submenuId = submenuLink.dataset.submenuId; activateMenu(submenuId); } const backButton = event.target.closest(".menu-list-title"); if (backButton && backButton.parentElement.dataset.parentId) { const parentId = backButton.parentElement.dataset.parentId; activateMenu(parentId); } }); activateMenu(currentMenuId); }); </script> <div class="body-filling"> <script src="https://cdn.jsdelivr.net/gh/nextapps-de/flexsearch@0.7.31/dist/flexsearch.bundle.js"></script> <script src="/assets/js/make-clickable.js"></script> <script src="https://cdn.jsdelivr.net/npm/algoliasearch@4.19.1/dist/algoliasearch-lite.umd.js" integrity="sha256-qzlNbRtZWHoUV5I2mI2t9QR7oYXlS9oNctX+0pECXI0=" crossorigin="anonymous"></script> <script src="/assets/components/search-bar/search-bar.js"></script> <link rel="stylesheet" href="/assets/components/search-bar/search-bar.css"> <script> document.addEventListener('DOMContentLoaded', function() { for (let link of document.querySelectorAll('a')) { // Skip javascript:void(0) links if (link.href === 'javascript:void(0)' || link.getAttribute('href') === 'javascript:void(0)') { continue; } // Handle external links if (link.hostname !== window.location.hostname) { if (!link.target) { link.target = '_blank'; link.rel = 'noopener'; } } } }); </script> <div id="search-overlay" class="hidden"> <div class="search-results-pan-container"> <div class="search-bar-container"> <div class="search-bar-placeholder"> <img class="loupe-icon" src="/assets/images/icons/Search-Loupe-2.svg"> Search epoch.ai </div> <input class="search-bar"> <a class="search-button button filled-light-green-button" href="/search">Search</a> </div> <div class="search-results-container-wrapper hidden"> <div class="search-results-container"> <div class="results-header no-results"> Enter a query to search for results </div> <div class="search-results-wrapper hidden"> <div class="search-results"> </div> <script src="/assets/components/page-selector/page-selector.js"></script> <link rel="stylesheet" href="/assets/components/page-selector/page-selector.css"> <div class="no-search-index page-selector not-inited" data-items-per-page=10 data-num-items="30" data-current-page="1" data-num-pages=""> <button role="button" class="button light-button prev-button">Placeholder</button> </div> </div> </div> </div> </div> </div> <div class="page-content"> <div class="top-section regular-content"> <style> table { margin-bottom: 20px !important; } table th { text-align: left; } table td { vertical-align: top; } </style> <h1 class="title" id="cookies">Cookie Policy</h1> <p><strong>Last updated January 18, 2025</strong></p> <p>This Cookie Policy explains how Epoch Artificial Intelligence, Inc (“<strong>Company</strong>,” “<strong>we</strong>,” “<strong>us</strong>,” and “<strong>our</strong>”) uses cookies and similar technologies to recognize you when you visit our website at <a href="https://epoch.ai">https://epoch.ai</a> (“<strong>Website</strong>”). It explains what these technologies are and why we use them, as well as your rights to control our use of them.</p> <p>In some cases we may use cookies to collect personal information, or that becomes personal information if we combine it with other information.</p> <p><strong>What are cookies?</strong></p> <p>Cookies are small data files that are placed on your computer or mobile device when you visit a website. Cookies are widely used by website owners in order to make their websites work, or to work more efficiently, as well as to provide reporting information.</p> <p>Cookies set by the website owner (in this case, Epoch Artificial Intelligence, Inc) are called “first-party cookies.” Cookies set by parties other than the website owner are called “third-party cookies.” Third-party cookies enable third-party features or functionality to be provided on or through the website (e.g., advertising, interactive content, and analytics). The parties that set these third-party cookies can recognize your computer both when it visits the website in question and also when it visits certain other websites.</p> <p><strong>Why do we use cookies?</strong></p> <p>We use first- and third-party cookies for several reasons. Some cookies are required for technical reasons in order for our Website to operate, and we refer to these as “essential” or “strictly necessary” cookies. Other cookies also enable us to track and target the interests of our users to enhance the experience on our Online Properties. Third parties serve cookies through our Website for advertising, analytics, and other purposes. This is described in more detail below.</p> <p><strong>How can I control cookies?</strong></p> <p>You have the right to decide whether to accept or reject cookies. You can exercise your cookie rights by setting your preferences in the Cookie Consent Manager. The Cookie Consent Manager allows you to select which categories of cookies you accept or reject. Essential cookies cannot be rejected as they are strictly necessary to provide you with services.</p> <p>The Cookie Consent Manager can be found in the notification banner and on our Website. If you choose to reject cookies, you may still use our Website though your access to some functionality and areas of our Website may be restricted. You may also set or amend your web browser controls to accept or refuse cookies.</p> <p>The specific types of first- and third-party cookies served through our Website and the purposes they perform are described in the table below (please note that the specific cookies served may vary depending on the specific Online Properties you visit):</p> <p><strong>How can I control cookies on my browser?</strong></p> <p>As the means by which you can refuse cookies through your web browser controls vary from browser to browser, you should visit your browser’s help menu for more information. The following is information about how to manage cookies on the most popular browsers:</p> <ul> <li><a href="https://support.google.com/chrome/answer/95647#zippy=%2Callow-or-block-cookies">Chrome</a></li> <li><a href="https://support.microsoft.com/en-us/windows/delete-and-manage-cookies-168dab11-0753-043d-7c16-ede5947fc64d">Internet Explorer</a></li> <li><a href="https://support.mozilla.org/en-US/kb/enhanced-tracking-protection-firefox-desktop?redirectslug=enable-and-disable-cookies-website-preferences&redirectlocale=en-US">Firefox</a></li> <li><a href="https://support.apple.com/en-ie/guide/safari/sfri11471/mac">Safari</a></li> <li><a href="https://support.microsoft.com/en-us/windows/microsoft-edge-browsing-data-and-privacy-bb8174ba-9d73-dcf2-9b4a-c582b4e640dd">Edge</a></li> <li><a href="https://help.opera.com/en/latest/web-preferences/">Opera</a></li> </ul> <p>In addition, most advertising networks offer you a way to opt out of targeted advertising. If you would like to find out more information, please visit:</p> <ul> <li><a href="http://www.aboutads.info/choices/">Digital Advertising Alliance</a></li> <li><a href="https://youradchoices.ca/">Digital Advertising Alliance of Canada</a></li> <li><a href="http://www.youronlinechoices.com/">European Interactive Digital Advertising Alliance</a></li> </ul> <p><strong>What about other tracking technologies, like web beacons?</strong></p> <p>Cookies are not the only way to recognize or track visitors to a website. We may use other, similar technologies from time to time, like web beacons (sometimes called “tracking pixels” or “clear gifs”). These are tiny graphics files that contain a unique identifier that enables us to recognize when someone has visited our Website or opened an email including them. This allows us, for example, to monitor the traffic patterns of users from one page within a website to another, to deliver or communicate with cookies, to understand whether you have come to the website from an online advertisement displayed on a third-party website, to improve site performance, and to measure the success of email marketing campaigns. In many instances, these technologies are reliant on cookies to function properly, and so declining cookies will impair their functioning.</p> <p><strong>Do you use Flash cookies or Local Shared Objects?</strong></p> <p>Websites may also use so-called “Flash Cookies” (also known as Local Shared Objects or “LSOs”) to, among other things, collect and store information about your use of our services, fraud prevention, and for other site operations.</p> <p>If you do not want Flash Cookies stored on your computer, you can adjust the settings of your Flash player to block Flash Cookies storage using the tools contained in the <a href="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager07.html">Website Storage Settings Panel</a>. You can also control Flash Cookies by going to the <a href="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager03.html">Global Storage Settings Panel</a> and following the instructions (which may include instructions that explain, for example, how to delete existing Flash Cookies (referred to “information” on the Macromedia site), how to prevent Flash LSOs from being placed on your computer without your being asked, and (for Flash Player 8 and later) how to block Flash Cookies that are not being delivered by the operator of the page you are on at the time).</p> <p>Please note that setting the Flash Player to restrict or limit acceptance of Flash Cookies may reduce or impede the functionality of some Flash applications, including, potentially, Flash applications used in connection with our services or online content.</p> <p><strong>Do you serve targeted advertising?</strong></p> <p>Third parties may serve cookies on your computer or mobile device to serve advertising through our Website. These companies may use information about your visits to this and other websites in order to provide relevant advertisements about goods and services that you may be interested in. They may also employ technology that is used to measure the effectiveness of advertisements. They can accomplish this by using cookies or web beacons to collect information about your visits to this and other sites in order to provide relevant advertisements about goods and services of potential interest to you. The information collected through this process does not enable us or them to identify your name, contact details, or other details that directly identify you unless you choose to provide these.</p> <p><strong>How often will you update this Cookie Policy?</strong></p> <p>We may update this Cookie Policy from time to time in order to reflect, for example, changes to the cookies we use or for other operational, legal, or regulatory reasons. Please therefore revisit this Cookie Policy regularly to stay informed about our use of cookies and related technologies.</p> <p>The date at the top of this Cookie Policy indicates when it was last updated.</p> <p><strong>Where can I get further information?</strong></p> <p>If you have any questions about our use of cookies or other technologies, please email us at <a href="mailto:ops@epoch.ai">ops@epoch.ai</a> or by post to:</p> <p>Epoch Artificial Intelligence, Inc<br /> 166 Geary St ste 1500 1917<br /> San Francisco, CA 94108<br /> United States<br /> Phone: (US)(484) 739-0991</p> </div> </div> </div><div id="footer-container"> <div class="banner"> <span class="banner-text">Excited about our work?</span> <div class="banner-buttons"> <a role="button" class="button banner-button outline-light-medium-button" data-contact="aW5mb0BlcG9jaGFpLm9yZw==" href="#">Talk to us</a> <a href="/support-us" role="button" class="button banner-button outline-light-medium-button">Support our research</a> </div> </div> <div class="footer"> <div class="top"> <div class="logo-newsletter"> <div class="logo-wrapper"> <img class="logo" src="/assets/images/epoch-full-white.svg" alt="Epoch AI's logo"> </div> <div class="newsletter"> <span class="newsletter-text">Sign up for our newsletter to read weekly commentary on AI news and developments and the latest updates on our research.</span> <a class="button banner-button outline-light-medium-button" href="https://epochai.substack.com/subscribe">Subscribe to our newsletter</a> </div> <div class="social"> <a class="social-item" href="https://twitter.com/EpochAIResearch"> <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M29.9441 8.00212C28.9174 8.46878 27.8108 8.77545 26.6641 8.92212C27.8374 8.21545 28.7441 7.09545 29.1708 5.74878C28.0641 6.41545 26.8374 6.88212 25.5441 7.14878C24.4908 6.00212 23.0108 5.33545 21.3308 5.33545C18.1974 5.33545 15.6374 7.89545 15.6374 11.0555C15.6374 11.5088 15.6908 11.9488 15.7841 12.3621C11.0374 12.1221 6.81078 9.84212 3.99745 6.38878C3.50411 7.22878 3.22411 8.21545 3.22411 9.25545C3.22411 11.2421 4.22411 13.0021 5.77078 14.0021C4.82411 14.0021 3.94411 13.7355 3.17078 13.3355V13.3755C3.17078 16.1488 5.14411 18.4688 7.75745 18.9888C6.91856 19.2194 6.0375 19.2513 5.18411 19.0821C5.54626 20.2188 6.2555 21.2133 7.21214 21.926C8.16878 22.6387 9.32471 23.0337 10.5174 23.0555C8.49567 24.6561 5.98946 25.5213 3.41078 25.5088C2.95745 25.5088 2.50411 25.4821 2.05078 25.4288C4.58411 27.0555 7.59745 28.0021 10.8241 28.0021C21.3308 28.0021 27.1041 19.2821 27.1041 11.7221C27.1041 11.4688 27.1041 11.2288 27.0908 10.9754C28.2108 10.1754 29.1708 9.16212 29.9441 8.00212Z" fill="#CCD8D9"/> </svg> </a> <a class="social-item" href="https://github.com/epoch-research"> <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M15.9996 2.66724C14.2486 2.66724 12.5148 3.01211 10.8971 3.68218C9.27947 4.35224 7.80962 5.33436 6.5715 6.57248C4.07102 9.07296 2.66626 12.4643 2.66626 16.0006C2.66626 21.8939 6.49293 26.8939 11.7863 28.6672C12.4529 28.7739 12.6663 28.3606 12.6663 28.0006V25.7472C8.97293 26.5472 8.18626 23.9606 8.18626 23.9606C7.57293 22.4139 6.70626 22.0006 6.70626 22.0006C5.49293 21.1739 6.79959 21.2006 6.79959 21.2006C8.13293 21.2939 8.83959 22.5739 8.83959 22.5739C9.99959 24.6006 11.9596 24.0006 12.7196 23.6806C12.8396 22.8139 13.1863 22.2272 13.5596 21.8939C10.5996 21.5606 7.49293 20.4139 7.49293 15.3339C7.49293 13.8539 7.99959 12.6672 8.86626 11.7206C8.73293 11.3872 8.26626 10.0006 8.99959 8.20057C8.99959 8.20057 10.1196 7.84057 12.6663 9.56057C13.7196 9.26723 14.8663 9.12057 15.9996 9.12057C17.1329 9.12057 18.2796 9.26723 19.3329 9.56057C21.8796 7.84057 22.9996 8.20057 22.9996 8.20057C23.7329 10.0006 23.2663 11.3872 23.1329 11.7206C23.9996 12.6672 24.5063 13.8539 24.5063 15.3339C24.5063 20.4272 21.3863 21.5472 18.4129 21.8806C18.8929 22.2939 19.3329 23.1072 19.3329 24.3472V28.0006C19.3329 28.3606 19.5463 28.7872 20.2263 28.6672C25.5196 26.8806 29.3329 21.8939 29.3329 16.0006C29.3329 14.2496 28.9881 12.5158 28.318 10.8981C27.6479 9.28045 26.6658 7.81059 25.4277 6.57248C24.1896 5.33436 22.7197 4.35224 21.102 3.68218C19.4844 3.01211 17.7506 2.66724 15.9996 2.66724Z" fill="#CCD8D9"/> </svg> </a> <a class="social-item linkedin-social-item" href="https://www.linkedin.com/company/epochai"> <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M25.3336 3.99988C26.0408 3.99988 26.7191 4.28083 27.2192 4.78093C27.7193 5.28102 28.0002 5.9593 28.0002 6.66654V25.3332C28.0002 26.0405 27.7193 26.7187 27.2192 27.2188C26.7191 27.7189 26.0408 27.9999 25.3336 27.9999H6.66691C5.95967 27.9999 5.28139 27.7189 4.78129 27.2188C4.2812 26.7187 4.00024 26.0405 4.00024 25.3332V6.66654C4.00024 5.9593 4.2812 5.28102 4.78129 4.78093C5.28139 4.28083 5.95967 3.99988 6.66691 3.99988H25.3336ZM24.6669 24.6665V17.5999C24.6669 16.4471 24.209 15.3415 23.3938 14.5263C22.5786 13.7112 21.4731 13.2532 20.3202 13.2532C19.1869 13.2532 17.8669 13.9465 17.2269 14.9865V13.5065H13.5069V24.6665H17.2269V18.0932C17.2269 17.0665 18.0536 16.2265 19.0802 16.2265C19.5753 16.2265 20.0501 16.4232 20.4002 16.7733C20.7502 17.1233 20.9469 17.5981 20.9469 18.0932V24.6665H24.6669ZM9.17358 11.4132C9.76766 11.4132 10.3374 11.1772 10.7575 10.7571C11.1776 10.337 11.4136 9.7673 11.4136 9.17321C11.4136 7.93321 10.4136 6.91988 9.17358 6.91988C8.57596 6.91988 8.00281 7.15728 7.58023 7.57986C7.15765 8.00245 6.92024 8.57559 6.92024 9.17321C6.92024 10.4132 7.93358 11.4132 9.17358 11.4132ZM11.0269 24.6665V13.5065H7.33358V24.6665H11.0269Z" fill="#CCD8D9"/> </svg> </a> </div> </div> <div class="map-wrapper"> <div class="map"> <div class="map-group"> <span class="map-header">Research</span> <ul class="map-list"> <li class="map-list-item"><a href="/blog">Publications</a></li> <li class="map-list-item"><a href="/data">Data on AI</a></li> <li class="map-list-item"><a href="/trends">Key Trends & Insights</a></li> <li class="map-list-item"><a href="/gradient-updates">Gradient Updates</a></li> </ul> </div> <div class="map-group"> <span class="map-header">Projects</span> <ul class="map-list"> <li class="map-list-item"><a href="/frontiermath">FrontierMath</a></li> <li class="map-list-item"><a href="/tools/distributed-training#careers">Distributed Training</a></li> </ul> </div> <div class="map-group"> <span class="map-header">Company</span> <ul class="map-list"> <li class="map-list-item"><a href="/about">About Us</a></li> <li class="map-list-item"><a href="/research">About Our Research</a></li> <li class="map-list-item"><a href="/careers#careers"> Careers</a></li> <li class="map-list-item"><a href="/support-us">Support Us</a></li> <li class="map-list-item"><a data-contact="aW5mb0BlcG9jaGFpLm9yZw==" href="#">Contact</a></li> </ul> </div> </div> </div> </div> <div class="bottom"> <span class="copyright">@ 2025 Epoch AI</span> <div style="display: flex; gap: 1em"> <a href="/privacy">Privacy Notice</a> <a href="/cookies">Cookie Policy</a> </div> </div> </div> </div> <script> "use strict"; for (let container of document.querySelectorAll('.auto-fold')) { makeFoldable(container); } if (location.hash) { followInternalLink(location.hash); } </script> <script> if (tippy) { tippy('[data-tippy-content]', { theme: 'epoch-default', allowHTML: true, zIndex: 999999, }); } </script> <style> #cookie-notice { padding: 1.5rem; display: none; text-align: left; position: fixed; bottom: 1.5rem; left: 1.5rem; max-width: 560px; background: #102930; color: #F7FCFB; z-index: 9999999 !important; font-family: Messina Sans; border-radius: 8px; } .cookie-notice-content h4 { font-family: Messina Serif; font-weight: 170; line-height: 40.6px; font-size: 29px; letter-spacing: -0.02em; text-align: left; margin-bottom: 0.5rem; } .cookie-notice-content span { font-family: Messina Sans; font-size: 16px; font-weight: 400; line-height: 25.6px; letter-spacing: 0.005em; text-align: left; } .cookie-notice-btns { display: flex; justify-content: space-between; margin-top: 1rem; gap: 1rem; } .btn { flex: 1 1 auto; padding: 8px 24px; border-radius: 99999px; color: #F7FCFB; cursor: pointer; font-family: Messina Sans; font-size: 16px; line-height: 25.6px; } .btn-primary { background: #34D2B9; border: 1px solid #34D2B9; color: #102930; } .btn-primary:hover, .btn-secondary { background: transparent; border: 1px solid #F7FCFB; color: #F7FCFB; } .btn:active, .btn-secondary:hover { background: #07171A; border: 1px solid #07171A; color: #F7FCFB; } @media (max-width: 608px) { #cookie-notice { left: 0; bottom: 0; width: 100%; border-radius: 8px 8px 0 0; } } </style> <div id="cookie-notice"> <div class="cookie-notice-content"> <h4>We value your privacy</h4> <span>Our website uses cookies to enhance your browsing experience and analyze site traffic. By clicking ‘Accept All,’ you consent to our use of cookies as described in our <a href="/privacy">Privacy Policy</a> and <a href="/cookies">Cookie Policy</a>. If you wish to withdraw your consent, you can contact us at <a href="mailto:infra@epoch.ai">infra@epoch.ai</a>.</span> </div> <div class="cookie-notice-btns"> <button id="cookie-notice-decline" class="btn btn-secondary">Reject all</button> <button id="cookie-notice-accept" class="btn btn-primary">Accept all</button> </div> </div> <script> function createCookie(name, value, days) { var expires = ""; if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = "; expires=" + date.toUTCString(); } document.cookie = name + "=" + value + expires + "; path=/"; } function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') c = c.substring(1, c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); } return null; } function eraseCookie(name) { createCookie(name, "", -1); } function checkCookieConsent() { var cookieConsent = readCookie('cookie-notice-dismissed'); var consentDate = readCookie('cookie-consent-date'); if (cookieConsent && consentDate) { var currentDate = new Date(); var consentDateObj = new Date(consentDate); if ((currentDate - consentDateObj) / (1000 * 60 * 60 * 24) < 30) { setConsent(cookieConsent === 'true'); // Microsoft Clarity tracking code if (cookieConsent === 'true') { (function (c, l, a, r, i, t, y) { c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments) }; t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i; y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y); })(window, document, "clarity", "script", "mrxdks5ty9"); } return true; } else { eraseCookie('cookie-notice-dismissed'); eraseCookie('cookie-consent-date'); } } return false; } if (!checkCookieConsent()) { document.getElementById('cookie-notice').style.display = 'block'; document.getElementById('cookie-notice-accept').addEventListener("click", function () { createCookie('cookie-notice-dismissed', 'true', 31); createCookie('cookie-consent-date', new Date().toISOString(), 31); setConsent(true); document.getElementById('cookie-notice').style.display = 'none'; location.reload(); }); document.getElementById('cookie-notice-decline').addEventListener("click", function () { createCookie('cookie-notice-dismissed', 'false', 31); createCookie('cookie-consent-date', new Date().toISOString(), 31); setConsent(false); var cookies = document.cookie.split(";"); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i]; var eqPos = cookie.indexOf("="); var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie; if (name.trim().startsWith('_ga')) { document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; } } document.getElementById('cookie-notice').style.display = 'none'; }); } </script> </body> <script> // Show page only after it has loaded document.addEventListener("DOMContentLoaded", () => { async function waitForFontReady() { let searchOverlay = document.querySelector("#search-overlay"); let ready = await document.fonts.ready; if (!searchOverlay.dataset.loaded) { searchOverlay.addEventListener("load", () => { document.body.style.opacity = 1; }); } else { document.body.style.opacity = 1; } } waitForFontReady(); }); // Jump to anchor on page load (it's not working by default) document.addEventListener("DOMContentLoaded", () => { let hash = window.location.hash; if (hash) { let element = document.getElementById(hash.slice(1)); if (element) { setTimeout(() => { freezeNavBar(); element.scrollIntoView(); unfreezeNavBarOnScrollStop(); }, 200); } } }); </script> </html>