Close Menu
    Facebook LinkedIn YouTube WhatsApp X (Twitter) Pinterest
    Trending
    • The most incredible practical movie stunts ever filmed
    • Tech Up Your Sourdough With These Upper-Crust Baking Gadgets
    • Resident Evil Requiem Revealed, but Where’s Leon Kennedy?
    • What Happens When You Remove the Filters from AI Love Generators?
    • First passenger flight for electric CTOL aircraft lands in JFK
    • Best Backpacking Tents (2025), WIRED-Tested and Reviewed
    • Microcurrent Devices: Do They Work and Are They Worth It? We Asked Skin Experts
    • Will Musk’s explosive row with Trump help or harm his businesses?
    Facebook LinkedIn WhatsApp
    Times FeaturedTimes Featured
    Saturday, June 7
    • Home
    • Founders
    • Startups
    • Technology
    • Profiles
    • Entrepreneurs
    • Leaders
    • Students
    • VC Funds
    • More
      • AI
      • Robotics
      • Industries
      • Global
    Times FeaturedTimes Featured
    Home»Artificial Intelligence»Load-Testing LLMs Using LLMPerf | Towards Data Science
    Artificial Intelligence

    Load-Testing LLMs Using LLMPerf | Towards Data Science

    Editor Times FeaturedBy Editor Times FeaturedApril 19, 2025No Comments9 Mins Read
    Facebook Twitter Pinterest Telegram LinkedIn Tumblr WhatsApp Email
    Share
    Facebook Twitter LinkedIn Pinterest Telegram Email WhatsApp Copy Link


    Language Mannequin (LLM) just isn’t essentially the ultimate step in productionizing your Generative AI software. An usually forgotten, but essential a part of the MLOPs lifecycle is correctly load testing your LLM and guaranteeing it is able to stand up to your anticipated manufacturing site visitors. Load testing at a excessive degree is the follow of testing your software or on this case your mannequin with the site visitors it might expect in a manufacturing setting to make sure that it’s performant.

    Up to now we’ve mentioned load testing traditional ML models utilizing open supply Python instruments comparable to Locust. Locust helps seize common efficiency metrics comparable to requests per second (RPS) and latency percentiles on a per request foundation. Whereas that is efficient with extra conventional APIs and ML fashions it doesn’t seize the total story for LLMs. 

    LLMs historically have a a lot decrease RPS and better latency than conventional ML fashions because of their measurement and bigger compute necessities. Normally the RPS metric does probably not present essentially the most correct image both as requests can vastly range relying on the enter to the LLM. As an example you might need a question asking to summarize a big chunk of textual content and one other question which may require a one-word response. 

    This is the reason tokens are seen as a way more correct illustration of an LLM’s efficiency. At a excessive degree a token is a piece of textual content, each time an LLM is processing your enter it “tokenizes” the enter. A token differs relying particularly on the LLM you’re utilizing, however you may think about it for example as a phrase, sequence of phrases, or characters in essence.

    Picture by Writer

    What we’ll do on this article is discover how we are able to generate token primarily based metrics so we are able to perceive how your LLM is acting from a serving/deployment perspective. After this text you’ll have an thought of how one can arrange a load-testing software particularly to benchmark completely different LLMs within the case that you’re evaluating many fashions or completely different deployment configurations or a mixture of each.

    Let’s get arms on! If you’re extra of a video primarily based learner be happy to comply with my corresponding YouTube video down beneath:

    NOTE: This text assumes a fundamental understanding of Python, LLMs, and Amazon Bedrock/SageMaker. If you’re new to Amazon Bedrock please consult with my starter information here. If you wish to study extra about SageMaker JumpStart LLM deployments consult with the video here.

    DISCLAIMER: I’m a Machine Studying Architect at AWS and my opinions are my very own.

    Desk of Contents

    1. LLM Particular Metrics
    2. LLMPerf Intro
    3. Making use of LLMPerf to Amazon Bedrock
    4. Further Assets & Conclusion

    LLM-Particular Metrics

    As we briefly mentioned within the introduction with regard to LLM internet hosting, token primarily based metrics typically present a significantly better illustration of how your LLM is responding to completely different payload sizes or sorts of queries (summarization vs QnA). 

    Historically we’ve all the time tracked RPS and latency which we’ll nonetheless see right here nonetheless, however extra so at a token degree. Listed below are among the metrics to concentrate on earlier than we get began with load testing:

    1. Time to First Token: That is the period it takes for the primary token to generate. That is particularly helpful when streaming. As an example when utilizing ChatGPT we begin processing data when the primary piece of textual content (token) seems.
    2. Whole Output Tokens Per Second: That is the whole variety of tokens generated per second, you may consider this as a extra granular various to the requests per second we historically monitor.

    These are the most important metrics that we’ll concentrate on, and there’s a couple of others comparable to inter-token latency that may also be displayed as a part of the load checks. Have in mind the parameters that additionally affect these metrics embody the anticipated enter and output token measurement. We particularly play with these parameters to get an correct understanding of how our LLM performs in response to completely different era duties. 

    Now let’s check out a software that allows us to toggle these parameters and show the related metrics we’d like.

    LLMPerf Intro

    LLMPerf is constructed on high of Ray, a well-liked distributed computing Python framework. LLMPerf particularly leverages Ray to create distributed load checks the place we are able to simulate real-time manufacturing degree site visitors. 

    Observe that any load-testing software can also be solely going to have the ability to generate your anticipated quantity of site visitors if the consumer machine it’s on has sufficient compute energy to match your anticipated load. As an example as you scale the concurrency or throughput anticipated in your mannequin, you’d additionally wish to scale the consumer machine(s) the place you’re working your load take a look at.

    Now particularly inside LLMPerf there’s a couple of parameters which might be uncovered which might be tailor-made for LLM load testing as we’ve mentioned:

    • Mannequin: That is the mannequin supplier and your hosted mannequin that you simply’re working with. For our use-case it’ll be Amazon Bedrock and Claude 3 Sonnet particularly.
    • LLM API: That is the API format through which the payload ought to be structured. We use LiteLLM which gives a standardized payload construction throughout completely different mannequin suppliers, thus simplifying the setup course of for us particularly if we wish to take a look at completely different fashions hosted on completely different platforms.
    • Enter Tokens: The imply enter token size, you can too specify a regular deviation for this quantity.
    • Output Tokens: The imply output token size, you can too specify a regular deviation for this quantity.
    • Concurrent Requests: The variety of concurrent requests for the load take a look at to simulate.
    • Check Period: You may management the period of the take a look at, this parameter is enabled in seconds.

    LLMPerf particularly exposes all these parameters by their token_benchmark_ray.py script which we configure with our particular values. Let’s have a look now at how we are able to configure this particularly for Amazon Bedrock.

    Making use of LLMPerf to Amazon Bedrock

    Setup

    For this instance we’ll be working in a SageMaker Classic Notebook Instance with a conda_python3 kernel and ml.g5.12xlarge occasion. Observe that you simply wish to choose an occasion that has sufficient compute to generate the site visitors load that you simply wish to simulate. Make sure that you even have your AWS credentials for LLMPerf to entry the hosted mannequin be it on Bedrock or SageMaker.

    LiteLLM Configuration

    We first configure our LLM API construction of selection which is LiteLLM on this case. With LiteLLM there’s help throughout varied mannequin suppliers, on this case we configure the completion API to work with Amazon Bedrock:

    import os
    from litellm import completion
    
    os.environ["AWS_ACCESS_KEY_ID"] = "Enter your entry key ID"
    os.environ["AWS_SECRET_ACCESS_KEY"] = "Enter your secret entry key"
    os.environ["AWS_REGION_NAME"] = "us-east-1"
    
    response = completion(
        mannequin="anthropic.claude-3-sonnet-20240229-v1:0",
        messages=[{ "content": "Who is Roger Federer?","role": "user"}]
    )
    output = response.decisions[0].message.content material
    print(output)

    To work with Bedrock we configure the Mannequin ID to level in the direction of Claude 3 Sonnet and move in our immediate. The neat half with LiteLLM is that messages key has a constant format throughout mannequin suppliers.

    Publish-execution right here we are able to concentrate on configuring LLMPerf for Bedrock particularly.

    LLMPerf Bedrock Integration

    To execute a load take a look at with LLMPerf we are able to merely use the offered token_benchmark_ray.py script and move within the following parameters that we talked of earlier:

    • Enter Tokens Imply & Commonplace Deviation
    • Output Tokens Imply & Commonplace Deviation
    • Max variety of requests for take a look at
    • Period of take a look at
    • Concurrent requests

    On this case we additionally specify our API format to be LiteLLM and we are able to execute the load take a look at with a easy shell script like the next:

    %%sh
    python llmperf/token_benchmark_ray.py 
        --model bedrock/anthropic.claude-3-sonnet-20240229-v1:0 
        --mean-input-tokens 1024 
        --stddev-input-tokens 200 
        --mean-output-tokens 1024 
        --stddev-output-tokens 200 
        --max-num-completed-requests 30 
        --num-concurrent-requests 1 
        --timeout 300 
        --llm-api litellm 
        --results-dir bedrock-outputs

    On this case we hold the concurrency low, however be happy to toggle this quantity relying on what you’re anticipating in manufacturing. Our take a look at will run for 300 seconds and submit period you need to see an output listing with two recordsdata representing statistics for every inference and in addition the imply metrics throughout all requests within the period of the take a look at.

    We will make this look just a little neater by parsing the abstract file with pandas:

    import json
    from pathlib import Path
    import pandas as pd
    
    # Load JSON recordsdata
    individual_path = Path("bedrock-outputs/bedrock-anthropic-claude-3-sonnet-20240229-v1-0_1024_1024_individual_responses.json")
    summary_path = Path("bedrock-outputs/bedrock-anthropic-claude-3-sonnet-20240229-v1-0_1024_1024_summary.json")
    
    with open(individual_path, "r") as f:
        individual_data = json.load(f)
    
    with open(summary_path, "r") as f:
        summary_data = json.load(f)
    
    # Print abstract metrics
    df = pd.DataFrame(individual_data)
    summary_metrics = {
        "Mannequin": summary_data.get("mannequin"),
        "Imply Enter Tokens": summary_data.get("mean_input_tokens"),
        "Stddev Enter Tokens": summary_data.get("stddev_input_tokens"),
        "Imply Output Tokens": summary_data.get("mean_output_tokens"),
        "Stddev Output Tokens": summary_data.get("stddev_output_tokens"),
        "Imply TTFT (s)": summary_data.get("results_ttft_s_mean"),
        "Imply Inter-token Latency (s)": summary_data.get("results_inter_token_latency_s_mean"),
        "Imply Output Throughput (tokens/s)": summary_data.get("results_mean_output_throughput_token_per_s"),
        "Accomplished Requests": summary_data.get("results_num_completed_requests"),
        "Error Charge": summary_data.get("results_error_rate")
    }
    print("Claude 3 Sonnet - Efficiency Abstract:n")
    for ok, v in summary_metrics.objects():
        print(f"{ok}: {v}")

    The ultimate load take a look at outcomes will look one thing like the next:

    Screenshot by Writer

    As we are able to see we see the enter parameters that we configured, after which the corresponding outcomes with time to first token(s) and throughput with regard to imply output tokens per second.

    In a real-world use case you may use LLMPerf throughout many various mannequin suppliers and run checks throughout these platforms. With this software you should use it holistically to establish the precise mannequin and deployment stack in your use-case when used at scale.

    Further Assets & Conclusion

    The whole code for the pattern might be discovered at this related Github repository. Should you additionally wish to work with SageMaker endpoints you will discover a Llama JumpStart deployment load testing pattern here.

    All in all load testing and analysis are each essential to making sure that your LLM is performant towards your anticipated site visitors earlier than pushing to manufacturing. In future articles we’ll cowl not simply the analysis portion, however how we are able to create a holistic take a look at with each parts.

    As all the time thanks for studying and be happy to go away any suggestions and join with me on Linkedln and X.



    Source link

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Editor Times Featured
    • Website

    Related Posts

    What Happens When You Remove the Filters from AI Love Generators?

    June 7, 2025

    7 AI Hentai Girlfriend Chat Websites No Filter

    June 7, 2025

    How AI Girlfriend Chatbots Create Unique Interactions

    June 7, 2025

    How I Automated My Machine Learning Workflow with Just 10 Lines of Python

    June 7, 2025

    Prescriptive Modeling Unpacked: A Complete Guide to Intervention With Bayesian Modeling.

    June 7, 2025

    Not Everything Needs Automation: 5 Practical AI Agents That Deliver Enterprise Value

    June 6, 2025

    Comments are closed.

    Editors Picks

    The most incredible practical movie stunts ever filmed

    June 7, 2025

    Tech Up Your Sourdough With These Upper-Crust Baking Gadgets

    June 7, 2025

    Resident Evil Requiem Revealed, but Where’s Leon Kennedy?

    June 7, 2025

    What Happens When You Remove the Filters from AI Love Generators?

    June 7, 2025
    Categories
    • Founders
    • Startups
    • Technology
    • Profiles
    • Entrepreneurs
    • Leaders
    • Students
    • VC Funds
    About Us
    About Us

    Welcome to Times Featured, an AI-driven entrepreneurship growth engine that is transforming the future of work, bridging the digital divide and encouraging younger community inclusion in the 4th Industrial Revolution, and nurturing new market leaders.

    Empowering the growth of profiles, leaders, entrepreneurs businesses, and startups on international landscape.

    Asia-Middle East-Europe-North America-Australia-Africa

    Facebook LinkedIn WhatsApp
    Featured Picks

    What does “PhD-level” AI mean? OpenAI’s rumored $20,000 agent plan explained.

    March 11, 2025

    Businesses Got Squeezed by Trump’s Tariffs. Now Some of Them Want Their Money Back

    May 28, 2025

    The Nintendo Switch 2 Price Won’t Get Hit By Trump’s Tariffs

    April 19, 2025
    Categories
    • Founders
    • Startups
    • Technology
    • Profiles
    • Entrepreneurs
    • Leaders
    • Students
    • VC Funds
    Copyright © 2024 Timesfeatured.com IP Limited. All Rights.
    • Privacy Policy
    • Disclaimer
    • Terms and Conditions
    • About us
    • Contact us

    Type above and press Enter to search. Press Esc to cancel.