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 #122; LLMs for Enterprise Tasks; Agent Builders or Fully Custom Pipelines?
Artificial Intelligence   Latest   Machine Learning

TAI #122; LLMs for Enterprise Tasks; Agent Builders or Fully Custom Pipelines?

Last Updated on November 3, 2024 by Editorial Team

Author(s): Towards AI Editorial Team

Originally published on Towards AI.

What happened this week in AI by Louie

This week, the focus on customizing LLMs for enterprises gained further momentum with Microsoft’s announcement of Copilot Studio agents, following Salesforce’s launch of AgentForce last month. These no/low-code tools allow businesses to build AI-powered agents that handle customized tasks, similar to OpenAI’s GPT store, but with added flexibility and integration for specific business workflows and tool use. We think LLM agent abilities have also been enhanced by OpenAI’s new o1 model series which allows the LLM to use more inference tokens and spend more time planning its actions.

We have long argued that while LLMs are getting very close to adding huge productivity gains across much of the economy, “out of the box” foundation models generally fall short of the reliability threshold needed for productivity gains on enterprise tasks. After factoring the time spent getting ChatGPT or Claude working for your task and then diligently checking and correcting its answers the productivity gains are quickly reduced. This problem can be partially solved by task customization and internal data access via No-code Agent/GPT Builder platforms and we think these will be very valuable products and stepping stones for many companies. However, we still believe a lot more flexibility and hard work is needed to truly optimize an LLM for specific datasets, companies, and workflows and get the best possible reliability and user experience. This work can’t be fully achieved with no-code tools and without knowledge of how LLMs work — but it is also a different skill set to both traditional software development and machine learning engineering. For this reason at Towards AI we are focused on training the new discipline of “LLM Developers”; creating a workforce to build customized LLM pipelines on top of foundation LLMs for a huge array of different specific workflows or products.

Microsoft is introducing customizable autonomous agents through Copilot Studio, moving from private to public preview starting next month. These agents, designed to perform complex tasks independently, are embedded within Microsoft’s existing productivity tools like Dynamics 365. Through Copilot Studio, organizations can now build agents tailored to their specific business needs using a low-code interface. The platform integrates enterprise data and LLM models, allowing these agents to automate workflows, interact with other systems, and operate based on defined triggers and business logic. Microsoft is also introducing ten new autonomous agents within Dynamics 365, specifically targeting areas like sales, service, finance, and supply chain management. These agents can perform tasks such as prioritizing sales leads or optimizing supply chain operations, enabling teams to focus on more strategic work.

Several companies have adopted Microsoft’s copilot agents. McKinsey & Company created an agent that reduces client onboarding time by 90% and administrative tasks by 30%, while Thomson Reuters uses an agent to cut some legal due diligence tasks by 50%. At Microsoft, these AI tools are also driving internal success, with one sales team increasing revenue per seller by 9.4% and closing 20% more deals. Additionally, the use of agents has led to a 21.5% boost in marketing conversion rates and a 42% improvement in HR self-service accuracy.

Why should you care?

LLM-driven productivity can be extremely lucrative for the entrepreneurs and companies that build or adopt them. It has the power to truly transform the global economy, but a lot of work on customization is needed to get there! And this creates a huge opportunity for software developers and AI experts to join in the effort. To access the potential benefits of LLMs we need to build reliable products on top of these models. This includes bringing in industry expertise and developing a thorough understanding of the use case and problems you are solving in your specific workflow, company, or industry niche. Foundation Model capabilities will get better but we expect your custom pipeline, custom dataset, tailored RAG pipeline, hand picked fine-tuning and multi-shot task examples, custom evaluations, custom UI/UX and thorough understanding of your use case and customer’s problems will always add incremental reliability and ease of use. This will create the best in class product for your niche and will create the most value for companies.

We think agent builder platforms such as Microsoft Copilot Studio agents and Enterprise adoption of Chatgpt are likely to be a taster and stepping stone for companies towards exploring the huge benefits of LLMs. This will accelerate adoption of LLMs at enterprise and trigger development of in-house customized LLM tools as well as exploration of the best in class third party LLM pipelines for specific workflows and industries. If you want to take part in this opportunity; we are very close to releasing the most comprehensive practical LLM python Developer course out there; From Beginner to Advanced LLM Developer — 85+ lessons progressing all the way from dataset collection and curation to deployment of a working advanced LLM pipeline. More about this next week!

Louie Peters — Towards AI Co-founder and CEO

Hottest News

1. Nvidia Just Dropped a New AI Model on the Level of OpenAI’s GPT-4

Nvidia has introduced the Llama-3.1-Nemotron-70B-Instruct AI model, outperforming GPT-4 in some benchmarks. The model used ~20,000 prompt responses from human and synthetic data to make the model more helpful. This continues Nvidia’s expansion from GPU manufacturing to also providing more external AI software and models.

2. Mistral Releases New AI Models Optimized for Laptops and Phones

Mistral has introduced “Les Ministraux,” a series of AI models, Ministral 3B and Ministral 8B, optimized for edge devices like laptops and phones. These models focus on privacy-first, low-latency applications such as on-device translation and local analytics. Available for download or via Mistral’s cloud platform, they reportedly outperform competitors in AI benchmarks. This launch follows Mistral’s recent $640 million funding round, signaling continued expansion in AI offerings.

3. INTELLECT–1: Launching the First Decentralized Training of a 10B Parameter Model

INTELLECT-1 introduces the first decentralized training of a 10-billion-parameter AI model using the OpenDiLoCo method, aiming to democratize AI development by reducing centralized control and enhancing open-source access. The project focuses on optimizing communication and compute efficiency, inviting public contributions to advance open-source AI capabilities.

4. OpenAI & Microsoft Reportedly Hire Banks To Renegotiate Partnership Terms

OpenAI and Microsoft are renegotiating their partnership terms, with Goldman Sachs and Morgan Stanley advising, to redefine Microsoft’s stake and governance in OpenAI after its transition to a benefit corporation. This follows OpenAI’s efforts to secure cheaper cloud services and a $10 billion deal with Oracle. Despite a projected $5 billion loss this year, OpenAI aims for profitability by 2029 with reported internal forecast revenues of $100 billion.

5. IBM Debuts Open-Source Granite 3.0 LLMs for Enterprise AI

IBM is expanding its enterprise AI business with the launch of the third generation of Granite LLMs. A core element of the new generation is the continued focus on real open-source enterprise AI. IBM is also ensuring that models can be fine-tuned for enterprise AI with its InstructLab capabilities. The new models include general-purpose options with a 2 billion and 8 billion Granite 3.0. There are also Mixture-of-Experts (MoE) models that include Granite 3.0 3B A800M Instruct, Granite 3.0 1B A400M Instruct, Granite 3.0 3B A800M Base, and Granite 3.0 1B A400M Base.

6. Former OpenAI CTO Mira Murati Is Reportedly Fundraising for a New AI Startup

Mira Murati, the OpenAI CTO who announced her departure last month, is raising VC funding for a new AI startup, according to Reuters. This startup will reportedly focus on building AI products based on proprietary models and could raise more than $100 million in this round.

7. Rhymes AI Released Allegro: Advanced Video Generation Model

Rhymes AI announces the open-source release of Allegro, an advanced text-to-video model. It can generate detailed 6-second videos at 15 FPS with 720×1280 resolution, can be interpolated to 30 FPS with EMA-VFI. It is a 175M parameter VideoVAE and a 2.8B parameter VideoDiT model that supports multiple precisions (FP32, BF16, FP16) and uses 9.3 GB of GPU memory in BF16 mode with CPU offloading.

Five 5-minute reads/videos to keep you learning

1. Machines of Loving Grace

Dario Amodei, CEO of Anthropic, emphasizes the transformative benefits of AI in his essay, advocating for a balanced discourse that acknowledges both risks and positive impacts. He envisions AI enhancing health, economics, and governance, stressing the importance of managing risks to achieve significant societal advancements.

2. How To Build a Custom Text Classifier Without Days of Human Labeling

This post explains how to build a text classification model combining LLMs and human feedback, drastically reducing the time to deploy a supervised model for a specialized use case. It also highlights how to autolabel a dataset by defining its fields, labels, and annotation guidelines, human review and improvement of LLM suggested labels, train a specialized SetFit model, and compare it against an LLM few-shot classifier.

3. AI Is Confusing — Here’s Your Cheat Sheet

The AI industry is filled with jargon, and it can be challenging to understand what’s actually happening with each new development. This article compiles a list of some of the most common AI terms. It explains what they mean and why they’re important.

4. Confounds and Complex Bias Interplay From Human Bias Mitigation in Language Model Datasets Used for Finetuning LLMs

The article explores the challenges of mitigating human biases in language model datasets for fine-tuning LLMs. It dives into the complex interplay between confounds and various biases during this process, discussing how human biases can inadvertently shape AI models and impact their fairness and accuracy.

5. What Geoffrey Hinton’s Nobel Prize Means for the AI World

The article discusses Geoffrey Hinton’s potential Nobel Prize in the context of AI. It also dives into the broader impact this accolade could have on the perception of AI research, its ethical considerations, and its future direction.

Repositories & Tools

1. Tabled library utilizes the Surya tool to detect and extract tables from various document types, converting them into markdown, CSV, or HTML formats.

2. Mini Omni 2 is an omni-interactive model that can understand image, audio, and text inputs and has end-to-end voice conversations with users.

3. Phidata is a framework for building agentic systems that can be used to build intelligent agents, run those agents as a software application, and optimize your agentic system.

4. CoTracker is a model for tracking any point (pixel) on a video.

Top Papers of The Week

1. Movie Gen: A Cast of Media Foundation Models

Meta’s Movie Gen introduces advanced foundation models for generating high-quality 1080p HD videos with synchronized audio. These models support instruction-based editing, personalized video creation, text-to-video synthesis, and video-to-audio generation, with the largest model featuring 30 billion parameters.

2. Aria: An Open Multimodal Native Mixture-of-Experts Model

This paper introduces Aria, an open multimodal native model with best-in-class performance across various multimodal, language, and coding tasks. Aria is a mixture-of-expert model with 3.9B and 3.5B activated parameters per visual and text token, respectively. It outperforms Pixtral-12B and Llama3.2–11B and is competitive against the best proprietary models on various multimodal tasks.

3. Web Agents with World Models: Learning and Leveraging Environment Dynamics in Web Navigation

The paper introduces a World-model-augmented (WMA) web agent designed to address the limitations of current large language models in web navigation tasks, particularly their lack of predictive “world models.” By simulating action outcomes, the WMA agent enhances decision-making.

4. Meta-DT: Offline Meta-RL as Conditional Sequence Modeling with World Model Disentanglement

Meta Decision Transformer (Meta-DT) is an innovative approach in offline meta-reinforcement learning that integrates transformer architecture with world model disentanglement for improved task representation. It enhances generalization using a context-aware world model and trajectory-based prompts.

5. LightRAG: Simple and Fast Retrieval-Augmented Generation

LightRAG incorporates graph structures into text indexing and retrieval processes. It employs a dual-level retrieval system that enhances comprehensive information retrieval from low-level and high-level knowledge discovery. Additionally, integrating graph structures with vector representations facilitates efficient retrieval of related entities and their relationships, significantly improving response times while maintaining contextual relevance.

6. DuoAttention: Efficient Long-Context LLM Inference with Retrieval and Streaming Heads

Only a few retrieval heads are essential for processing long contexts and need full attention on all tokens. In contrast, the remaining streaming heads focus on recent tokens and do not require full attention. Based on this insight, the paper introduces DuoAttention. This framework only applies a full KV cache to retrieval heads while using a lightweight, constant-length KV cache for streaming heads, reducing LLM’s decoding and pre-filling memory and latency without compromising its long-context abilities.

Quick Links

1. Meta has released an AI tool called the ‘Self-Taught Evaluator’ that can assess and improve the accuracy of other AI models without any human intervention. The ‘Self-Taught Evaluator,’ introduced in a paper, described how the model would follow a similar “chain of thought” method that OpenAI’s o1 model uses to ‘think’ before it responds.

2. UCLA researchers introduced SLIViT, a deep-learning framework that teaches itself quickly to automatically analyze and diagnose MRIs and other 3D medical images — with accuracy matching that of medical specialists in a fraction of the time.

3. Adobe’s Firefly Video Model is launching across a handful of new tools, including some right inside Premiere Pro that will allow creatives to extend footage and generate video from still images and text prompts.

4. Xai released its long awaited API. The API currently only has one model “grok-beta”. It costs $5 per million input tokens and $15 per million output tokens.

Who’s Hiring in AI

Machine Learning Systems Engineer, RL Engineering @Anthropic (Bay Area, CA, USA)

PhD AI/ML Engineering Internship — Recommender Systems & Search @LinkedIn (Mountain View, CA, USA)

AI Technical Writer and Developer for Large Language Models @Towards AI Inc (Remote)

Technical Writer, AI/ML Docs @Amazon (Seattle, WA, USA)

Senior Fullstack Engineer, Conversations AI @Postscript (Remote/USA)

R&D Engineering Intern @New York Times (New York, NY, USA)

Intern, AI Research Scientist — 3D Generation @Autodesk (London, UK)

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'); -->