赞
踩
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。