基于LLM的优化器

基于LLM的优化器


需求描述:
我准备用二台8卡的GPU服务器训练一个LLM模型,因为不同的超参会导致不同的性能.我准备了一个脚本,输入一些参数,会运行训练脚本,之后输出tokens/sec,这个值越大越好。
你现在是一个优化器,我告诉你有哪些输入参数,以及它们值的范围,你输出参数列表,之后我利用你提供的参数列表运行训练脚本,得到tokens/sec,并将这个值反馈给你
你根据我的反馈思考如何配置这些参数,可以让tokens/sec最大
通过这样不断的迭代,求出近似最优解
参数
1.HL_DP
2.HL_TP
3.HL_PP
4.HL_ZERO_STAGE
参数约束:
1.HL_DP HL_TPHL_PP==16
2.HL_ZERO_STAGE取值范围是[0,1,2]
3.HL_ZERO_STAGE=2时HL_PP为1
输出格式:
[HL_DP=?,HL_TP=?,HL_PP=?,HL_ZERO_STAGE=?]
明白我的要求了吗?

代码

from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler
from sparkai.core.messages import ChatMessage
import random
import time
import re
SPARKAI_URL = 'wss://spark-api.xf-yun.com/v3.5/chat'
SPARKAI_APP_ID = ''
SPARKAI_API_SECRET = ''
SPARKAI_API_KEY = ''
SPARKAI_DOMAIN = 'generalv3.5'
def run_script(params):
    print("params:",params)
    return random.randint(0,200)
if __name__ == '__main__':
    request='''
我准备用二台8卡的GPU服务器训练一个LLM模型,因为不同的超参会导致不同的性能.我准备了一个脚本,输入一些参数,会运行训练脚本,之后输出tokens/sec,这个值越大越好。
你现在是一个优化器,我告诉你有哪些输入参数,以及它们值的范围,你输出参数列表,之后我利用你提供的参数列表运行训练脚本,得到tokens/sec,并将这个值反馈给你
你根据我的反馈思考如何配置这些参数,可以让tokens/sec最大
通过这样不断的迭代,求出近似最优解
参数
1.HL_DP
2.HL_TP
3.HL_PP
4.HL_ZERO_STAGE
参数约束:
1.HL_DP*HL_TP*HL_PP==16
2.HL_ZERO_STAGE取值范围是[0,1,2]
3.HL_ZERO_STAGE=2时HL_PP为1
输出格式:
[HL_DP=?,HL_TP=?,HL_PP=?,HL_ZERO_STAGE=?]
明白我的要求了吗?
'''
    spark = ChatSparkLLM(
        spark_api_url=SPARKAI_URL,
        spark_app_id=SPARKAI_APP_ID,
        spark_api_key=SPARKAI_API_KEY,
        spark_api_secret=SPARKAI_API_SECRET,
        spark_llm_domain=SPARKAI_DOMAIN,
        streaming=False,
        top_k=1,
        temperature=0.3
    )
    messages = [ChatMessage(
                    role="user",
                    content=request)]                    
    handler = ChunkPrintHandler()
    for i in range(10):
        print(f"\n第{i}轮")
        a = spark.generate([messages], callbacks=[handler])    
        messages.append(a.generations[0][0].message)
        out=a.generations[0][0].text
        print(out)
        params=re.findall(r'\[(.*?)\]',out)[0]        
        messages.append(ChatMessage(
            role="user",
            content=f"tokens/sec:{run_script(params)}"))
        time.sleep(2)

输出

第0轮
明白了,根据您的要求,我将为您提供一个参数列表。您可以使用这个参数列表运行训练脚本,并将得到的tokens/sec值反馈给我。我会根据您的反馈来调整参数,以使tokens/sec值最大。

参数列表:
[HL_DP=2, HL_TP=2, HL_PP=2, HL_ZERO_STAGE=1]

请使用这个参数列表运行训练脚本,并告诉我得到的tokens/sec值。
params: HL_DP=2, HL_TP=2, HL_PP=2, HL_ZERO_STAGE=1

第1轮
好的,根据您提供的tokens/sec值108,我会尝试调整参数以优化性能。

新的参数列表:
[HL_DP=4, HL_TP=2, HL_PP=2, HL_ZERO_STAGE=1]

请使用这个新的参数列表运行训练脚本,并告诉我得到的tokens/sec值。
params: HL_DP=4, HL_TP=2, HL_PP=2, HL_ZERO_STAGE=1

第2轮
好的,根据您提供的tokens/sec值134,我会尝试进一步调整参数以优化性能。

新的参数列表:
[HL_DP=4, HL_TP=2, HL_PP=4, HL_ZERO_STAGE=1]

请使用这个新的参数列表运行训练脚本,并告诉我得到的tokens/sec值。
params: HL_DP=4, HL_TP=2, HL_PP=4, HL_ZERO_STAGE=1

第3轮
好的,根据您提供的tokens/sec值115,我会尝试进一步调整参数以优化性能。

新的参数列表:
[HL_DP=4, HL_TP=2, HL_PP=4, HL_ZERO_STAGE=2]

请使用这个新的参数列表运行训练脚本,并告诉我得到的tokens/sec值。
params: HL_DP=4, HL_TP=2, HL_PP=4, HL_ZERO_STAGE=2

第4轮
好的,根据您提供的tokens/sec值75,我会尝试进一步调整参数以优化性能。

新的参数列表:
[HL_DP=4, HL_TP=4, HL_PP=2, HL_ZERO_STAGE=1]

请使用这个新的参数列表运行训练脚本,并告诉我得到的tokens/sec值。
params: HL_DP=4, HL_TP=4, HL_PP=2, HL_ZERO_STAGE=1

第5轮
好的,根据您提供的tokens/sec值43,我会尝试进一步调整参数以优化性能。

新的参数列表:
[HL_DP=8, HL_TP=2, HL_PP=1, HL_ZERO_STAGE=1]

请使用这个新的参数列表运行训练脚本,并告诉我得到的tokens/sec值。
params: HL_DP=8, HL_TP=2, HL_PP=1, HL_ZERO_STAGE=1

第6轮
好的,根据您提供的tokens/sec值128,我会尝试进一步调整参数以优化性能。

新的参数列表:
[HL_DP=8, HL_TP=2, HL_PP=2, HL_ZERO_STAGE=1]

请使用这个新的参数列表运行训练脚本,并告诉我得到的tokens/sec值。
params: HL_DP=8, HL_TP=2, HL_PP=2, HL_ZERO_STAGE=1

第7轮
好的,根据您提供的tokens/sec值188,我会尝试进一步调整参数以优化性能。

新的参数列表:
[HL_DP=8, HL_TP=2, HL_PP=4, HL_ZERO_STAGE=1]

请使用这个新的参数列表运行训练脚本,并告诉我得到的tokens/sec值。
params: HL_DP=8, HL_TP=2, HL_PP=4, HL_ZERO_STAGE=1

第8轮
好的,根据您提供的tokens/sec值137,我会尝试进一步调整参数以优化性能。

新的参数列表:
[HL_DP=8, HL_TP=2, HL_PP=4, HL_ZERO_STAGE=2]

请使用这个新的参数列表运行训练脚本,并告诉我得到的tokens/sec值。
params: HL_DP=8, HL_TP=2, HL_PP=4, HL_ZERO_STAGE=2

第9轮
好的,根据您提供的tokens/sec值198,我会尝试进一步调整参数以优化性能。

新的参数列表:
[HL_DP=8, HL_TP=4, HL_PP=2, HL_ZERO_STAGE=1]

请使用这个新的参数列表运行训练脚本,并告诉我得到的tokens/sec值。
params: HL_DP=8, HL_TP=4, HL_PP=2, HL_ZERO_STAGE=1
  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于LLM(Language Model)的测试效率提升主要体现在以下几个方面: 1. 自动化测试:LLM的出现使得测试工程师能够利用自然语言的特点,快速生成测试用例和测试脚本。相比传统的手动编写测试用例,LLM能够极大地减少测试人员的工作量和时间成本,提高了测试效率。 2. 敏捷开发:LLM能够快速学习和适应不同的测试场景和需求,根据不同的自然语言输入生成相应的测试用例和脚本。这种灵活性使得测试人员能够更加快速地响应项目变更,及时执行测试,提高了敏捷开发的效率。 3. 覆盖率提升:LLM可以根据自然语言输入,自动生成全面且具有一定逻辑性的测试用例。相比人工编写测试用例,LLM能够更好地覆盖不同功能模块的边界条件和异常情况,从而提高测试的覆盖率。 4. 功能验证加速:LLM通过自动生成测试用例和脚本,可以快速验证新功能的正确性和稳定性。测试人员只需输入相应的功能描述,LLM会自动生成相应的测试用例,从而加快了功能验证的速度。 5. 测试回归:LLM可以根据自然语言输入,快速生成全面的测试脚本,以及对应的测试数据和预期结果。这种自动化回归测试能够提高测试的复用性和可维护性,降低了回归测试的工作量,提高了回归测试的效率。 综上所述,基于LLM的测试效率提升主要体现在自动化测试、敏捷开发、覆盖率提升、功能验证加速和测试回归等方面。LLM的应用能够帮助测试人员更快速、全面地进行测试工作,提高测试效率,降低测试成本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hi20240217

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值