Name: Towards AI Legal Name: Towards AI, Inc. Description: Towards AI is the world's leading artificial intelligence (AI) and technology publication. Read by thought-leaders and decision-makers around the world. Phone Number: +1-650-246-9381 Email: pub@towardsai.net
228 Park Avenue South New York, NY 10003 United States
Website: Publisher: https://towardsai.net/#publisher Diversity Policy: https://towardsai.net/about Ethics Policy: https://towardsai.net/about Masthead: https://towardsai.net/about
Name: Towards AI Legal Name: Towards AI, Inc. Description: Towards AI is the world's leading artificial intelligence (AI) and technology publication. Founders: Roberto Iriondo, , Job Title: Co-founder and Advisor Works for: Towards AI, Inc. Follow Roberto: X, LinkedIn, GitHub, Google Scholar, Towards AI Profile, Medium, ML@CMU, FreeCodeCamp, Crunchbase, Bloomberg, Roberto Iriondo, Generative AI Lab, Generative AI Lab Denis Piffaretti, Job Title: Co-founder Works for: Towards AI, Inc. Louie Peters, Job Title: Co-founder Works for: Towards AI, Inc. Louis-François Bouchard, Job Title: Co-founder Works for: Towards AI, Inc. Cover:
Towards AI Cover
Logo:
Towards AI Logo
Areas Served: Worldwide Alternate Name: Towards AI, Inc. Alternate Name: Towards AI Co. Alternate Name: towards ai Alternate Name: towardsai Alternate Name: towards.ai Alternate Name: tai Alternate Name: toward ai Alternate Name: toward.ai Alternate Name: Towards AI, Inc. Alternate Name: towardsai.net Alternate Name: pub.towardsai.net
5 stars – based on 497 reviews

Frequently Used, Contextual References

TODO: Remember to copy unique IDs whenever it needs used. i.e., URL: 304b2e42315e

Resources

Take our 85+ lesson From Beginner to Advanced LLM Developer Certification: From choosing a project to deploying a working product this is the most comprehensive and practical LLM course out there!

Publication

TAI 129: Huge Week for Gen AI With o1, Sora, Gemini-1206, Genie 2, ChatGPT Pro and More!
Latest   Machine Learning

TAI 129: Huge Week for Gen AI With o1, Sora, Gemini-1206, Genie 2, ChatGPT Pro and More!

Last Updated on December 10, 2024 by Editorial Team

Author(s): Towards AI Editorial Team

Originally published on Towards AI.

What happened this week in AI by Louie

This was an extremely busy week for generative AI model releases. In OpenAI’s 12 days of Christmas, the company has so far launched a new $200 per month ChatGPT Pro subscription, its o1 and o1-Pro reasoning models, Sora Turbo (text-to-video model), and a new LLM customization technique — reinforcement fine-tuning. Meanwhile, Google updated its Gemini model with gemini-exp-1206 making large leaps on benchmarks (e.g., Livebench to 63.6 vs. Sonnet 3.5 at 58.5 and gemini-exp-1121 at 56.7) and reaching the top of lmarena. Meanwhile, Amazon launched its new “Nova” family of LLMs, Meta made large improvements to Llama with Llama 3.3 models (the new 70B model matches the prior 405B model on many measures), and xAI released its first in-house text-to-image model. Outside of LLMs, Google also launched Genie 2 — a model that can create playable 3D worlds from a single image. — with hopes this type of model could enable future agents to be trained and evaluated in virtual environments.

OpenAI moved its o1 reasoning model out of preview to mixed reception. We think the company made a strategic decision to release a smaller, faster, and more affordable model to launch, which means it has somewhat mixed benchmark results relative to o1-preview. The company also launched o1 pro mode, exclusively available to ChatGPT Pro subscribers, which uses additional inference time compute to achieve even greater reliability and precision. In testing, o1 pro demonstrated superior performance on rigorous benchmarks, including competition-level coding and advanced mathematical problem-solving, consistently producing correct answers across multiple attempts.

Source: Openai — o1 model family performance when requiring the correct answer in four out of four attempts (“4/4 reliability”), not just one.

Sora Turbo, OpenAI’s advanced video generation model, is now available to ChatGPT Plus and Pro users as a standalone product. The tool allows users to generate high-quality videos up to 1080p resolution, up to 20 seconds long, in multiple aspect ratios. ChatGPT Plus users can generate up to 50 videos at 480p resolution or fewer videos at 720p each month. It supports creative workflows by enabling users to extend, remix, and blend existing assets or create entirely new videos from text. Safety remains a priority and was likely a key reason for the long delay since the early demos, with visible watermarks, metadata for content verification, and strict moderation to prevent misuse, particularly in cases involving deepfakes.

Together with its new models, OpenAI introduced ChatGPT Pro, a premium plan costing $200 per month — much higher than its $20 per month ChatGPT Plus offer. Subscribers gain unlimited access to OpenAI’s most advanced models, including OpenAI o1, o1-mini, GPT-4o, and Advanced Voice. Additionally, it offers the exclusive o1 pro mode, which uses enhanced compute power to deliver highly reliable and accurate responses, particularly for intricate tasks like competition-level coding, science, and advanced mathematics. Pro users also benefit from 10x higher limits for Sora, higher resolutions, and longer video durations.

Why should you care?

It is very hard to know which model releases this week will prove the most impactful in the long term! We think reinforcement fine-tuning (essentially customizing o1-like models to reason on specific tasks) is likely to become a very powerful new tool in the LLM Developer toolkit, and we are sure to add it to our comprehensive LLM Developer Conversion course once it is widely available. We also think Genie 2 could be the beginning of a very important new model series for agents and robotics. Gemini’s recent huge incremental progress is making it an extremely compelling LLM — particularly for price vs performance- while Amazon’s new Nova models are a signal of intent that it also aims to be a competitor in the LLM field.

OpenAI’s 12 days of OpenAI took the most press attention, however, with some justification as o1 and Sora are both truly impressive models in different fields. These models are also getting more compute-intensive — at the same time as OpenAI is more eager to scale revenue and monetization — and we’re not sure which played the biggest part in OpenAI’s launch of the $200 per month ChatGPT Pro option. These latest models are also not yet available via API, which further encourages monetization via ChatGPT — we hope this is not the beginning of the de-prioritization of the API! We think many people will be able to get a $200 per month value from ChatGPT Pro if they are willing to experiment, adapt their workflows to LLMs, and get educated on how to use them. This is particularly valuable for professionals working on complicated mathematics, science, finance, or legal analysis or creatives who could benefit from rapidly demoing new video ideas — but we think many, many people across the economy could figure out a use case that benefits them with some experimentation! However, with increasingly intense competition in the GenAI field (particularly with Google Gemini now a very top tier LLM and Amazon entering the arena as well as rapid open source progress at META and in China), we are not sure if OpenAI will be able to sustain this price point. It remains a key unanswered question generally who will be able to capture most of the huge value unlocked by the now inevitable GenAI-powered creativity and productivity gains: GPU companies, Foundation Model Companies, Customised LLM Pipeline Builders, Enterprise adopters who unlock new products and productivity gains or early individual users who gain an edge in their field?

Louie Peters — Towards AI Co-founder and CEO

Hottest News

1. OpenAI Introduced ChatGPT Pro

Open AI has added ChatGPT Pro, a $200 monthly plan that enables scaled access to the best of OpenAI’s models and tools. This plan includes unlimited access to OpenAI o1, o1-mini, GPT-4o, and Advanced Voice. It also includes o1 pro mode, a version of o1 that uses more compute to think harder and provide even better answers to the hardest problems.

2. Open AI Introduced Sora Turbo

Open AI has developed a new version of Sora, Sora Turbo, which is significantly faster than the model previewed in February. Users can generate videos up to 1080p resolution, up to 20 sec long, and in widescreen, vertical, or square aspect ratios. Users can also bring their own assets to extend, remix, and blend or generate entirely new content from text.

3. Meta Announced the Release of Llama 3.3

Meta has announced the newest addition to its Llama family of generative AI models: Llama 3.3 70B. The Llama 3.3 instruction-tuned text-only model is optimized for multilingual dialogue use cases. Meta claims Llama 3.3 70B outperforms Google’s Gemini 1.5 Pro, OpenAI’s GPT-4o, and Amazon’s newly released Nova Pro on several industry benchmarks, including MMLU.

4. OpenAI Unveils Reinforcement Fine-Tuning To Build Specialized AI Models for Complex Domains

OpenAI is expanding its custom AI training offerings with a new method called Reinforcement Fine-Tuning (RFT). This technique reinforces how the model reasons through similar problems and improves its accuracy on specific tasks in that domain. Open AI aims to create specialized o1 models that can perform complex technical tasks with minimal training examples.

5. Google DeepMind Introduces Genie 2

DeepMind has unveiled a model that can generate an “endless” variety of playable 3D worlds. Genie 2 — the successor to DeepMind’s Genie, released earlier this year — can generate an interactive, real-time scene from a single image and text description. DeepMind claims that Genie 2 can generate a “vast diversity of rich 3D worlds,” including worlds in which users can take actions like jumping and swimming by using a mouse or keyboard.

6. Amazon Launches Nova AI Model Family for Generating Text, Images, and Videos

AWS unveiled Amazon Nova, a new family of multimodal generative AI models designed for versatility and scale. Nova includes six models: four for text generation/understanding (Micro, Lite, Pro, Premier) and two for creative tasks (Canvas, Reel). Users can experiment, evaluate, and deploy Nova models on Bedrock.

7. Microsoft Copilot Vision Is Here

Microsoft is starting to test its new Copilot Vision feature. Initially unveiled in October, Copilot Vision allows Microsoft’s AI companion to see what users see on an Edge webpage they’re browsing. Users can then ask questions about the text, images, and content they’re viewing or use it to assist them. Copilot Vision is now in testing for a limited number of Copilot Pro subscribers in the US.

8. Google Says AI Weather Model Masters 15-Day Forecast

DeepMind’s GenCast AI system surpasses traditional weather models, notably the European Centre’s ensemble, in forecast accuracy beyond one week. By merging diffusion models and ensemble forecasting, GenCast maintains high resolution while reducing compute demands. It excels in predicting extreme weather and improves wind power output forecasting, suggesting a promising hybrid approach to weather prediction.

9. Google’s New Gemini Model Now Holds the №1 Spot in the Chatbot Arena Across All Domains

Google DeepMind’s new Gemini-exp-1206 model has reclaimed the top spot on the Chatbot Arena leaderboard, surpassing OpenAI across multiple benchmarks — while remaining completely free to use. The model excels in math, writing, and visuals and processes video with a 2M token window.

Five 5-minute reads/videos to keep you learning

1. How Good Are LLMs at Fixing Their Mistakes?

In this article, the author runs a test to see how effectively LLMs fix their mistakes when you point them out to them. This article presents the experiments, process, and findings of this experiment, which was built with Gradio on Spaces and uses Keras, JAX, and TPUs.

2. Agentic Design Patterns Part 1

In this article, Andrew Ng shares a framework for categorizing design patterns for building agents. It also sheds light on the evolution of AI that writes code, analyzed by several research teams. It focuses on an algorithm’s ability to do well on the widely used HumanEval coding benchmark.

3. You Could Have Designed State of the Art Positional Encoding

This post walks you through the step-by-step discovery of state-of-the-art positional encoding in transformer models. It iteratively improves the approach to encoding position with Rotary Positional Encoding (RoPE) used in the latest LLama 3.2 release and most modern transformers. This post intends to limit the mathematical knowledge required to follow along, but some basic linear algebra, trigonometry, and an understanding of self-attention are expected.

4. The End of Scaling Laws: How Harvard’s “Scaling Laws for Precision” Revolutionizes LLM Training

This article breaks down the research findings from “Scaling Laws for Precision” — a collaborative effort from leading institutions including Harvard University, Stanford University, and MIT — which has sparked significant discussion in the artificial intelligence community. The article dives into key concepts, technical implementation, theoretical framework, experimental design, etc.

5. Reward Hacking in Reinforcement Learning

Reward hacking in reinforcement learning arises when agents exploit reward function flaws to gain high rewards without achieving intended tasks. It’s a major challenge, especially with language models using reinforcement learning from human feedback. This article presents a deep dive into reward hacking and recommends mitigation strategies.

6. A System of Agents Brings Service-As-Software to Life

Software is no longer merely assisting humans. It acts as an autonomous worker capable of understanding and evolving beyond human limitations. This article breaks down what it means to translate human services into AI-powered software, how the service-as-software idea gets implemented, and how the software will evolve from simple workflow automation to a System of Agents.

Repositories & Tools

  1. Papers in 100 Lines of Code contains the implementation of papers in 100 lines of code.
  2. Daytona is an open-source dev environment manager.
  3. Florence-VL is a family of multimodal large language models (MLLMs) with enriched visual representations produced by Florence-2, a generative vision foundation model.

Top Papers of The Week

1. Densing Law of LLMs

This paper introduces capacity density and shows that LLMs’ capacity density grows exponentially over time. Capacity density provides a unified framework for assessing both model effectiveness and efficiency. Using some widely used benchmarks for evaluation, the capacity density of LLMs doubles approximately every three months.

2. GenCast: Diffusion-based ensemble forecasting for medium-range weather

This paper introduces GenCast, a probabilistic weather model with greater skill and speed than the world’s top operational medium-range weather forecast. GenCast is a machine learning weather prediction (MLWP) method trained on decades of reanalysis data. GenCast generates stochastic 15-day global forecasts at 12-hour steps and 0.25-degree latitude-longitude resolution for over 80 surface and atmospheric variables in 8 minutes.

3. PaliGemma 2: A Family of Versatile VLMs for Transfer

Google DeepMind published PaliGemma 2, an enhanced Vision-Language Model (VLM) based on Gemma 2 models, integrating the SigLIP-So400m vision encoder. Trained at multiple resolutions, these models excel in transfer tasks, including OCR-related tasks, generating long descriptions, and achieving state-of-the-art results across diverse domains.

4. SNOOPI: Supercharged One-step Diffusion Distillation with Proper Guidance

SNOOPI introduces a robust framework for one-step diffusion models, enhancing training stability with Proper Guidance-SwiftBrush and supporting negative prompt guidance through Negative-Away Steer Attention. These advancements significantly improve performance across metrics and set a new state-of-the-art HPSv2 score of 31.08, addressing previous instabilities and expanding practical image generation capabilities.

5. Evaluating Language Models as Synthetic Data Generators

This paper proposes AgoraBench, a benchmark that provides standardized settings and metrics to evaluate LMs’ data generation abilities. The research observes that LMs exhibit distinct strengths, an LM’s data generation ability doesn’t necessarily correlate with its problem-solving ability, and demonstrates that strategic choices in output format and cost-conscious model selection significantly impact data generation effectiveness.

6. VisionZip: Longer is Better but Not Necessary in Vision Language Models

This paper introduces VisionZip, a method that selects a set of informative tokens for input to the language model, reducing visual token redundancy and improving efficiency while maintaining model performance. It can be widely applied to image and video understanding tasks and is well-suited for multi-turn dialogues in real-world scenarios where previous methods tend to underperform.

Quick Links

1. Perplexity AI witnessed a surge in user engagement, serving 20 million daily queries — a significant leap from the 2.5 million daily queries recorded at the start of the year. As co-founder and CEO of Perplexity, Aravind Srinivas highlighted, “Slowly but surely, a new consumer habit is emerging: Plexing.”

2. ChatGPT now has over 300 million weekly users. OpenAI CEO Sam Altman revealed the milestone during The New York Times’ DealBook Summit. In the Twitter post, Open AI also shared that 1B user messages were sent on ChatGPT every day, and 1.3M devs have built on OpenAI in the US.

3. Alibaba Speech Lab has introduced ClearerVoice-Studio, a comprehensive voice processing framework. It combines advanced features such as speech enhancement, separation, and audio-video speaker extraction. The FRCRN model is one of its standout components, recognized for its exceptional ability to enhance speech by removing background noise while preserving the natural quality of the audio.

Who’s Hiring in AI

Senior Product Manager, Conversational AI Experiences @Moveworks (​​Mountain View, CA, USA)

Sr. Data Scientist / Machine Learning Engineer — GenAI & LLM @Databricks (Remote)

Python Developer (GenAI Acceleration Team) @Procter & Gamble (Warsaw, Poland)

Research Scientist Intern, PyTorch Core (PhD) @Meta (Menlo Park, CA, USA)

GenAI Platform Engineer, Applied Machine Learning @Apple (Sunnyvale, CA, USA)

Senior AI Test and Evaluation Engineer @Leidos (Remote/USA)

AI & GenAI Data Scientist-Senior Associate @PwC (Multiple Locations)

Interested in sharing a job opportunity here? Contact sponsors@towardsai.net.

Think a friend would enjoy this too? Share the newsletter and let them join the conversation.

Join thousands of data leaders on the AI newsletter. Join over 80,000 subscribers and keep up to date with the latest developments in AI. From research to projects and ideas. If you are building an AI startup, an AI-related product, or a service, we invite you to consider becoming a sponsor.

Published via Towards AI

Feedback ↓

Sign Up for the Course
`; } else { console.error('Element with id="subscribe" not found within the page with class "home".'); } } }); // Remove duplicate text from articles /* Backup: 09/11/24 function removeDuplicateText() { const elements = document.querySelectorAll('h1, h2, h3, h4, h5, strong'); // Select the desired elements const seenTexts = new Set(); // A set to keep track of seen texts const tagCounters = {}; // Object to track instances of each tag elements.forEach(el => { const tagName = el.tagName.toLowerCase(); // Get the tag name (e.g., 'h1', 'h2', etc.) // Initialize a counter for each tag if not already done if (!tagCounters[tagName]) { tagCounters[tagName] = 0; } // Only process the first 10 elements of each tag type if (tagCounters[tagName] >= 2) { return; // Skip if the number of elements exceeds 10 } const text = el.textContent.trim(); // Get the text content const words = text.split(/\s+/); // Split the text into words if (words.length >= 4) { // Ensure at least 4 words const significantPart = words.slice(0, 5).join(' '); // Get first 5 words for matching // Check if the text (not the tag) has been seen before if (seenTexts.has(significantPart)) { // console.log('Duplicate found, removing:', el); // Log duplicate el.remove(); // Remove duplicate element } else { seenTexts.add(significantPart); // Add the text to the set } } tagCounters[tagName]++; // Increment the counter for this tag }); } removeDuplicateText(); */ // Remove duplicate text from articles function removeDuplicateText() { const elements = document.querySelectorAll('h1, h2, h3, h4, h5, strong'); // Select the desired elements const seenTexts = new Set(); // A set to keep track of seen texts const tagCounters = {}; // Object to track instances of each tag // List of classes to be excluded const excludedClasses = ['medium-author', 'post-widget-title']; elements.forEach(el => { // Skip elements with any of the excluded classes if (excludedClasses.some(cls => el.classList.contains(cls))) { return; // Skip this element if it has any of the excluded classes } const tagName = el.tagName.toLowerCase(); // Get the tag name (e.g., 'h1', 'h2', etc.) // Initialize a counter for each tag if not already done if (!tagCounters[tagName]) { tagCounters[tagName] = 0; } // Only process the first 10 elements of each tag type if (tagCounters[tagName] >= 10) { return; // Skip if the number of elements exceeds 10 } const text = el.textContent.trim(); // Get the text content const words = text.split(/\s+/); // Split the text into words if (words.length >= 4) { // Ensure at least 4 words const significantPart = words.slice(0, 5).join(' '); // Get first 5 words for matching // Check if the text (not the tag) has been seen before if (seenTexts.has(significantPart)) { // console.log('Duplicate found, removing:', el); // Log duplicate el.remove(); // Remove duplicate element } else { seenTexts.add(significantPart); // Add the text to the set } } tagCounters[tagName]++; // Increment the counter for this tag }); } removeDuplicateText(); //Remove unnecessary text in blog excerpts document.querySelectorAll('.blog p').forEach(function(paragraph) { // Replace the unwanted text pattern for each paragraph paragraph.innerHTML = paragraph.innerHTML .replace(/Author\(s\): [\w\s]+ Originally published on Towards AI\.?/g, '') // Removes 'Author(s): XYZ Originally published on Towards AI' .replace(/This member-only story is on us\. Upgrade to access all of Medium\./g, ''); // Removes 'This member-only story...' }); //Load ionic icons and cache them if ('localStorage' in window && window['localStorage'] !== null) { const cssLink = 'https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css'; const storedCss = localStorage.getItem('ionicons'); if (storedCss) { loadCSS(storedCss); } else { fetch(cssLink).then(response => response.text()).then(css => { localStorage.setItem('ionicons', css); loadCSS(css); }); } } function loadCSS(css) { const style = document.createElement('style'); style.innerHTML = css; document.head.appendChild(style); } //Remove elements from imported content automatically function removeStrongFromHeadings() { const elements = document.querySelectorAll('h1, h2, h3, h4, h5, h6, span'); elements.forEach(el => { const strongTags = el.querySelectorAll('strong'); strongTags.forEach(strongTag => { while (strongTag.firstChild) { strongTag.parentNode.insertBefore(strongTag.firstChild, strongTag); } strongTag.remove(); }); }); } removeStrongFromHeadings(); "use strict"; window.onload = () => { /* //This is an object for each category of subjects and in that there are kewords and link to the keywods let keywordsAndLinks = { //you can add more categories and define their keywords and add a link ds: { keywords: [ //you can add more keywords here they are detected and replaced with achor tag automatically 'data science', 'Data science', 'Data Science', 'data Science', 'DATA SCIENCE', ], //we will replace the linktext with the keyword later on in the code //you can easily change links for each category here //(include class="ml-link" and linktext) link: 'linktext', }, ml: { keywords: [ //Add more keywords 'machine learning', 'Machine learning', 'Machine Learning', 'machine Learning', 'MACHINE LEARNING', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, ai: { keywords: [ 'artificial intelligence', 'Artificial intelligence', 'Artificial Intelligence', 'artificial Intelligence', 'ARTIFICIAL INTELLIGENCE', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, nl: { keywords: [ 'NLP', 'nlp', 'natural language processing', 'Natural Language Processing', 'NATURAL LANGUAGE PROCESSING', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, des: { keywords: [ 'data engineering services', 'Data Engineering Services', 'DATA ENGINEERING SERVICES', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, td: { keywords: [ 'training data', 'Training Data', 'training Data', 'TRAINING DATA', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, ias: { keywords: [ 'image annotation services', 'Image annotation services', 'image Annotation services', 'image annotation Services', 'Image Annotation Services', 'IMAGE ANNOTATION SERVICES', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, l: { keywords: [ 'labeling', 'labelling', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, pbp: { keywords: [ 'previous blog posts', 'previous blog post', 'latest', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, mlc: { keywords: [ 'machine learning course', 'machine learning class', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, }; //Articles to skip let articleIdsToSkip = ['post-2651', 'post-3414', 'post-3540']; //keyword with its related achortag is recieved here along with article id function searchAndReplace(keyword, anchorTag, articleId) { //selects the h3 h4 and p tags that are inside of the article let content = document.querySelector(`#${articleId} .entry-content`); //replaces the "linktext" in achor tag with the keyword that will be searched and replaced let newLink = anchorTag.replace('linktext', keyword); //regular expression to search keyword var re = new RegExp('(' + keyword + ')', 'g'); //this replaces the keywords in h3 h4 and p tags content with achor tag content.innerHTML = content.innerHTML.replace(re, newLink); } function articleFilter(keyword, anchorTag) { //gets all the articles var articles = document.querySelectorAll('article'); //if its zero or less then there are no articles if (articles.length > 0) { for (let x = 0; x < articles.length; x++) { //articles to skip is an array in which there are ids of articles which should not get effected //if the current article's id is also in that array then do not call search and replace with its data if (!articleIdsToSkip.includes(articles[x].id)) { //search and replace is called on articles which should get effected searchAndReplace(keyword, anchorTag, articles[x].id, key); } else { console.log( `Cannot replace the keywords in article with id ${articles[x].id}` ); } } } else { console.log('No articles found.'); } } let key; //not part of script, added for (key in keywordsAndLinks) { //key is the object in keywords and links object i.e ds, ml, ai for (let i = 0; i < keywordsAndLinks[key].keywords.length; i++) { //keywordsAndLinks[key].keywords is the array of keywords for key (ds, ml, ai) //keywordsAndLinks[key].keywords[i] is the keyword and keywordsAndLinks[key].link is the link //keyword and link is sent to searchreplace where it is then replaced using regular expression and replace function articleFilter( keywordsAndLinks[key].keywords[i], keywordsAndLinks[key].link ); } } function cleanLinks() { // (making smal functions is for DRY) this function gets the links and only keeps the first 2 and from the rest removes the anchor tag and replaces it with its text function removeLinks(links) { if (links.length > 1) { for (let i = 2; i < links.length; i++) { links[i].outerHTML = links[i].textContent; } } } //arrays which will contain all the achor tags found with the class (ds-link, ml-link, ailink) in each article inserted using search and replace let dslinks; let mllinks; let ailinks; let nllinks; let deslinks; let tdlinks; let iaslinks; let llinks; let pbplinks; let mlclinks; const content = document.querySelectorAll('article'); //all articles content.forEach((c) => { //to skip the articles with specific ids if (!articleIdsToSkip.includes(c.id)) { //getting all the anchor tags in each article one by one dslinks = document.querySelectorAll(`#${c.id} .entry-content a.ds-link`); mllinks = document.querySelectorAll(`#${c.id} .entry-content a.ml-link`); ailinks = document.querySelectorAll(`#${c.id} .entry-content a.ai-link`); nllinks = document.querySelectorAll(`#${c.id} .entry-content a.ntrl-link`); deslinks = document.querySelectorAll(`#${c.id} .entry-content a.des-link`); tdlinks = document.querySelectorAll(`#${c.id} .entry-content a.td-link`); iaslinks = document.querySelectorAll(`#${c.id} .entry-content a.ias-link`); mlclinks = document.querySelectorAll(`#${c.id} .entry-content a.mlc-link`); llinks = document.querySelectorAll(`#${c.id} .entry-content a.l-link`); pbplinks = document.querySelectorAll(`#${c.id} .entry-content a.pbp-link`); //sending the anchor tags list of each article one by one to remove extra anchor tags removeLinks(dslinks); removeLinks(mllinks); removeLinks(ailinks); removeLinks(nllinks); removeLinks(deslinks); removeLinks(tdlinks); removeLinks(iaslinks); removeLinks(mlclinks); removeLinks(llinks); removeLinks(pbplinks); } }); } //To remove extra achor tags of each category (ds, ml, ai) and only have 2 of each category per article cleanLinks(); */ //Recommended Articles var ctaLinks = [ /* ' ' + '

Subscribe to our AI newsletter!

' + */ '

Take our 85+ lesson From Beginner to Advanced LLM Developer Certification: From choosing a project to deploying a working product this is the most comprehensive and practical LLM course out there!

'+ '

Towards AI has published Building LLMs for Production—our 470+ page guide to mastering LLMs with practical projects and expert insights!

' + '
' + '' + '' + '

Note: Content contains the views of the contributing authors and not Towards AI.
Disclosure: This website may contain sponsored content and affiliate links.

' + 'Discover Your Dream AI Career at Towards AI Jobs' + '

Towards AI has built a jobs board tailored specifically to Machine Learning and Data Science Jobs and Skills. Our software searches for live AI jobs each hour, labels and categorises them and makes them easily searchable. Explore over 10,000 live jobs today with Towards AI Jobs!

' + '
' + '

🔥 Recommended Articles 🔥

' + 'Why Become an LLM Developer? Launching Towards AI’s New One-Stop Conversion Course'+ 'Testing Launchpad.sh: A Container-based GPU Cloud for Inference and Fine-tuning'+ 'The Top 13 AI-Powered CRM Platforms
' + 'Top 11 AI Call Center Software for 2024
' + 'Learn Prompting 101—Prompt Engineering Course
' + 'Explore Leading Cloud Providers for GPU-Powered LLM Training
' + 'Best AI Communities for Artificial Intelligence Enthusiasts
' + 'Best Workstations for Deep Learning
' + 'Best Laptops for Deep Learning
' + 'Best Machine Learning Books
' + 'Machine Learning Algorithms
' + 'Neural Networks Tutorial
' + 'Best Public Datasets for Machine Learning
' + 'Neural Network Types
' + 'NLP Tutorial
' + 'Best Data Science Books
' + 'Monte Carlo Simulation Tutorial
' + 'Recommender System Tutorial
' + 'Linear Algebra for Deep Learning Tutorial
' + 'Google Colab Introduction
' + 'Decision Trees in Machine Learning
' + 'Principal Component Analysis (PCA) Tutorial
' + 'Linear Regression from Zero to Hero
'+ '

', /* + '

Join thousands of data leaders on the AI newsletter. It’s free, we don’t spam, and we never share your email address. Keep up to date with the latest work in AI. From research to projects and ideas. If you are building an AI startup, an AI-related product, or a service, we invite you to consider becoming a sponsor.

',*/ ]; var replaceText = { '': '', '': '', '
': '
' + ctaLinks + '
', }; Object.keys(replaceText).forEach((txtorig) => { //txtorig is the key in replacetext object const txtnew = replaceText[txtorig]; //txtnew is the value of the key in replacetext object let entryFooter = document.querySelector('article .entry-footer'); if (document.querySelectorAll('.single-post').length > 0) { //console.log('Article found.'); const text = entryFooter.innerHTML; entryFooter.innerHTML = text.replace(txtorig, txtnew); } else { // console.log('Article not found.'); //removing comment 09/04/24 } }); var css = document.createElement('style'); css.type = 'text/css'; css.innerHTML = '.post-tags { display:none !important } .article-cta a { font-size: 18px; }'; document.body.appendChild(css); //Extra //This function adds some accessibility needs to the site. function addAlly() { // In this function JQuery is replaced with vanilla javascript functions const imgCont = document.querySelector('.uw-imgcont'); imgCont.setAttribute('aria-label', 'AI news, latest developments'); imgCont.title = 'AI news, latest developments'; imgCont.rel = 'noopener'; document.querySelector('.page-mobile-menu-logo a').title = 'Towards AI Home'; document.querySelector('a.social-link').rel = 'noopener'; document.querySelector('a.uw-text').rel = 'noopener'; document.querySelector('a.uw-w-branding').rel = 'noopener'; document.querySelector('.blog h2.heading').innerHTML = 'Publication'; const popupSearch = document.querySelector$('a.btn-open-popup-search'); popupSearch.setAttribute('role', 'button'); popupSearch.title = 'Search'; const searchClose = document.querySelector('a.popup-search-close'); searchClose.setAttribute('role', 'button'); searchClose.title = 'Close search page'; // document // .querySelector('a.btn-open-popup-search') // .setAttribute( // 'href', // 'https://medium.com/towards-artificial-intelligence/search' // ); } // Add external attributes to 302 sticky and editorial links function extLink() { // Sticky 302 links, this fuction opens the link we send to Medium on a new tab and adds a "noopener" rel to them var stickyLinks = document.querySelectorAll('.grid-item.sticky a'); for (var i = 0; i < stickyLinks.length; i++) { /* stickyLinks[i].setAttribute('target', '_blank'); stickyLinks[i].setAttribute('rel', 'noopener'); */ } // Editorial 302 links, same here var editLinks = document.querySelectorAll( '.grid-item.category-editorial a' ); for (var i = 0; i < editLinks.length; i++) { editLinks[i].setAttribute('target', '_blank'); editLinks[i].setAttribute('rel', 'noopener'); } } // Add current year to copyright notices document.getElementById( 'js-current-year' ).textContent = new Date().getFullYear(); // Call functions after page load extLink(); //addAlly(); setTimeout(function() { //addAlly(); //ideally we should only need to run it once ↑ }, 5000); }; function closeCookieDialog (){ document.getElementById("cookie-consent").style.display = "none"; return false; } setTimeout ( function () { closeCookieDialog(); }, 15000); console.log(`%c 🚀🚀🚀 ███ █████ ███████ █████████ ███████████ █████████████ ███████████████ ███████ ███████ ███████ ┌───────────────────────────────────────────────────────────────────┐ │ │ │ Towards AI is looking for contributors! │ │ Join us in creating awesome AI content. │ │ Let's build the future of AI together → │ │ https://towardsai.net/contribute │ │ │ └───────────────────────────────────────────────────────────────────┘ `, `background: ; color: #00adff; font-size: large`); //Remove latest category across site document.querySelectorAll('a[rel="category tag"]').forEach(function(el) { if (el.textContent.trim() === 'Latest') { // Remove the two consecutive spaces (  ) if (el.nextSibling && el.nextSibling.nodeValue.includes('\u00A0\u00A0')) { el.nextSibling.nodeValue = ''; // Remove the spaces } el.style.display = 'none'; // Hide the element } }); // Add cross-domain measurement, anonymize IPs 'use strict'; //var ga = gtag; ga('config', 'G-9D3HKKFV1Q', 'auto', { /*'allowLinker': true,*/ 'anonymize_ip': true/*, 'linker': { 'domains': [ 'medium.com/towards-artificial-intelligence', 'datasets.towardsai.net', 'rss.towardsai.net', 'feed.towardsai.net', 'contribute.towardsai.net', 'members.towardsai.net', 'pub.towardsai.net', 'news.towardsai.net' ] } */ }); ga('send', 'pageview'); -->