保留正文与补采附件。源页面当前未重新核验;具体限制见交付清单。

Revisit consent button We value your privacy We use cookies to enhance your browsing experience, serve personalised ads or content, and analyse our traffic. By clicking "Accept All", you consent to our use of cookies. Customise Reject All Accept All Customise Consent Preferences We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below. The cookies that are categorised as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... Show more NecessaryAlways Active Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Functional Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Analytics Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Performance Performance cookies are used to understand and analyse the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Advertisement Advertisement cookies are used to provide visitors with customised advertisements based on the pages you visited previously and to analyse the effectiveness of the ad campaigns.

Uncategorised Other uncategorised cookies are those that are being analysed and have not been classified into a category as yet. No cookies to display. Reject All Save My Preferences Accept All Toggle SearchToggle Mobile Navigation Publish AI, ML & data-science insights to a global community of data professionals. Sign inSubmit an Article LatestEditor's PicksNewsletterShipAI


Write For TDS LinkedInXToggle Search Artificial Intelligence

Fine-Tune Your LLM Without Maxing Out Your GPU

How you can fine-tune your LLMs with limited hardware and a tight budget John Adeojo August 1, 20238 min read Image by Author: Generated with Midjourney Image by Author: Generated with Midjourney

Demand for Bespoke LLMs

With the success of ChatGPT, we have witnessed a surge in demand for bespoke large language models. However, there has been a barrier to adoption. As these models are so large, it has been challenging for businesses, researchers, or hobbyists with a modest budget to customise them for their own datasets. Now with innovations in parameter efficient fine-tuning (PEFT) methods, it is entirely possible to fine-tune large language models at a relatively low cost. In this article, I demonstrate how to achieve this in a Google Colab. I anticipate that this article will prove valuable for practitioners, hobbyists, learners, and even hands-on start-up founders. So, if you need to mock up a cheap prototype, test an idea, or create a cool data science project to stand out from the crowd - keep reading.


Learn this step by step with the interactive AI Engineer, AI and Data Scientist and Machine Learning roadmaps.

Why Do We Fine-tune?

Businesses often have private datasets that drive some of their processes. To give you an example, I worked for a bank where we logged customer complaints in an Excel spreadsheet. An analyst was responsible for categorising these complaints (manually) for reporting purposes. Dealing with thousands of complaints each month, this process was time-consuming and prone to human error. Had we had the resources, we could have fine-tuned a large language model to carry out this categorisation for us, saving time through automation and potentially reducing the rate of incorrect categorisations. Inspired by this example, the remainder of this article demonstrates how we can fine-tune an LLM for categorising consumer complaints about financial products and services.


The Dataset

The dataset comprises real consumer complaints data for financial services and products. It is open, publicly available data published by the Consumer Financial Protection Bureau. There are over 120k anonymised complaints, categorised into approximately 214 "subissues". I have a version of the dataset on my hugging face page that you can explore for yourself.


The Hardware

The hardware I used for training was a V100 GPU with 16 GB of RAM, accessed via Google Colab. This is a relatively inexpensive and accessible infrastructure, available for rent via Google Colab Pro at approximately 9.99 USD per 100 compute units.


The Large Language Model

The LLM used is RoBERTa¹ (XLM), which has approximately 563 million parameters. An overview of the model and its specification can be found here. Though not the largest model currently available, RoBERTa still presents a demanding workload for those with access only to small-scale infrastructure. This makes it an ideal choice to demonstrate that training a relatively large model on small-scale infrastructure is feasible. Note - RoBERTa is a pre-trained model pulled from the Hugging Face Hub .


Fine-tuning at Low Cost with LoRA

As stated in the introduction, PEFT methods have made it possible to fine-tune LLMs at a low cost. One such method is LoRA, which stands for Low-Rank Adaptations of large language models. At a high level, LoRA accomplishes two things. First, it freezes the existing weights of the LLM (rendering them non-trainable); second, it injects trainable "lower-dimensional" layers into specified layers of the architecture. This technique yields a model with far fewer trainable parameters while still preserving performance. LoRA has been shown to reduce GPU memory consumption by a factor of three compared to standard fine-tuning. For further details on LoRA, please read the full paper.


Technical Details

In the past, the key challenge for training large language models on limited hardware was adapting the training parameters to prevent the process from crashing due to exceeding your GPU's memory capacity. With LoRA, one can push the boundaries of their hardware with just a few adjustments.

Applying LoRA

Assuming you have your dataset prepared, the first thing you need to do is set your LoRA configurations.

The next part of the script sets up the model itself. Here we are simply loading the pre-trained RoBERTa model from Hugging Face. The additional model parameters are simply passing dictionaries to the classification IDs such that the returned labels are in text form rather than numerically encoded. Finally, we want to transform the pre-trained model based on our LoRA configuration. This is done with the get_peft_model function. After applying LoRA, we are left with a network with the following structure: csharp

trainable params: 4,110,764 
all params: 562,951,596 
trainable%: 0.7302162440267778

Note: the original RoBERTa parameters are still in the network; they are simply frozen and therefore not trainable. Instead, we have the LoRA layers, which are fewer in number and trainable.

Initiate Training

Once we have our LoRA model, it's simply a matter of setting up our trainer and initiating the training process. Most aspects in the script are standard for training deep learning models; however, we have incorporated a few additional elements to improve GPU memory efficiency. Let's briefly outline them.


Model Diagnostics

Let's see how everything performed. Since this is about training effectively with limited hardware, let's start by looking at the GPU RAM diagnostics. Image by Author: GPU RAM usage chart Image by Author: GPU RAM usage chart We were able to train our model for 9 hours without exceeding the RAM on our GPU. This is a good result. What about the model performance? Let's take a look at the validation and training loss. Image by Author: validation and training loss Image by Author: validation and training loss Upon examining the loss charts, it seems that the models have yet to converge, despite the training session lasting approximately nine hours. This might not be surprising considering the substantial model size and limited infrastructure at our disposal, alongside the fact that many of the training parameter decisions were made to prioritise memory preservation over training speed. The model's precision, recall, and F1 show that it's prbably not ready for full production usage. image by Author: Precision and recall tracking for the model image by Author: Precision and recall tracking for the model Image by Author: F1 tracking for the model Image by Author: F1 tracking for the model

Cost

Google levies charges for renting GPUs via Colab based on compute units. Consequently, to calculate the cost of training the model for nine hours, we need to ascertain the number of compute units utilised. I was unable to locate explicit details from Google on their computation of these units, but it is suggested that a compute unit is determined as follows:

1 GB memory x 1 hour = 1 compute unit The model was trained for approximately nine hours and utilised around 15 GB of RAM. Therefore, the training run consumed roughly 135 compute units. With a price of 9.99 USD per 100 compute units, the cost of training the model amounts to approximately 13.49 USD. To achieve a usable state for the model, convergence may necessitate a slightly higher expenditure.


Conclusion

We have demonstrated that LoRA makes it possible for individuals with limited resources to engage in the world of LLMs. For interested readers, I recommend exploring other parameter efficient fine-tuning methods, as well as strategies for improving data efficiency in your training processes.

Thanks for reading.


If you're keen to enhance your skills in artificial intelligence, join the waiting list for my course, where I will guide you through the process of developing large language model powered applications. If you're seeking AI-transformation for your business, book a discovery call today.

Brainqub3 | AI software development For more insights on artificial intelligence, data science, and large language models you can subscribe to the YouTube channel.


Citations

[1] Conneau, A., Khandelwal, K., Goyal, N., Chaudhary, V., Wenzek, G., Guzmán, F., Grave, E., Ott, M., Zettlemoyer, L., & Stoyanov, V. (2019). Unsupervised cross-lingual representation learning at scale. CoRR. Retrieved from http://arxiv.org/abs/1911.02116

Register Now to Continue Reading

Unlock Towards Data Science with a Free Account

All articles on Towards Data Science are available to registered users. Create a free account today to access this article and thousands more. Register for freeSign in to your account


Written By

John Adeojo

See all from John Adeojo Artificial IntelligenceData ScienceDeep LearningLarge Language ModelsMachine Learning Share This Article

Towards Data Science is a community publication. Submit your insights to reach our global audience and earn through the TDS Author Payment Program. Write for TDS

Related Articles

How to connect Databricks to your Azure Data Lake

Programming Securely connect multiple Databricks workspaces to 1 central ADLSgen2 account René Bremer May 1, 20214 min read

Python Virtual Environments

Data Science Save yourself from future headaches by using Python virtual environments David Bruce March 12, 20214 min read

Data Journalism, 3D spatial projection

Data Science A framework for deconstructing Data Journalism knowledge into several main silos and projecting its practice into a three dimensional... Dror Kessler April 6, 202111 min read

De-coded: Transformers explained in plain English

Deep Learning No code, maths, or mention of Keys, Queries and Values Chris Hughes October 9, 202315 min read

The Power and Danger of Intuition in Data Science

Data Science As I start my new journey as a career Data Scientist, I had to cross paths with my old hypothetical nemesis: The Monty Hall Problem. To... Andrew Mooney December 17, 20208 min read

Probability for Data Scientists: The Great Geometric Distribution

Data Science Interactive Visualizations of the PMF/CDF & Modeling Real Data Kate Wall February 21, 20225 min read

4 Scikit-Learn Tools Every Data Scientist Should Use

Machine Learning Composite Estimators and Transformers Amal Hasni January 5, 20212 min read

System Design Cheatsheets: ElasticSearch

Programming Understand how and when to use ElasticSearch in systems, with three practical system design examples. Sanil Khurana November 28, 202314 min read

Development of a Benchmark Dataset with an interface to the FastAI DataLoader using Label Studio

Deep Learning A demo using Label Studio segmentation mask capabilities to develop a benchmark dataset for model viability testing. Aaron Soellinger April 21, 202110 min read

Your home for data science and AI. The world's leading publication for data science, data analytics, data engineering, machine learning, and artificial intelligence professionals. Subscribe to Our NewsletterWrite For TDS•About•Advertise•Privacy Policy•Terms of Use © Insight Media Group, LLC 2026•The New Stack•roadmap.sh•Creator Network

Recommended Articles

Close