iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0

SFT

1. 資料前處理

兩種類型的原始資料

  1. Instruction + Output
    {
        "instruction": "法国的首都是什么?",
        "input": "",
        "output": "法国的首都是巴黎。"
    }
    
  2. Instruction + Input + Output
    {
        "instruction": "将给定的数字按升序排列。",
        "input": "输入:2、4、0、8、3",
        "output": "输出:0、2、3、4、8"
    }
    

前處理程式碼

在sft階段每一筆訓練樣本都分成了兩個部份,promptanswer

  • prompt = instructioninput
  • answer = output
def sft_process(jsonpath_list, outcsvpath):
    q_lst=[]
    a_lst=[]
    for jsonpath in jsonpath_list:
        f = open(jsonpath,'r')
        #s
        while True:
            line = f.readline()
            if not line:
                break
            per=json.loads(line)
            q=per['instruction']
            i=per['input']
            a=per['output']
            q=q+i
            if len(q)<10 or len(a)<5:
                continue
            if len(q)>256 or len(a)>256:
                continue
            q_lst.append(q)
            a_lst.append(a)
    df=pd.DataFrame(columns=['prompt','answer'])
    df['prompt']=q_lst
    df['answer']=a_lst
    df.to_csv(outcsvpath,index=False)
    print(df)

上一篇
Day 13 - Baby LLama2 Chinese (7) 重新完成Pretrain階段訓練
下一篇
Day 15 - Baby LLama2 Chinese (9) SFT階段
系列文
用單張顯卡探索大型語言模型的奧秘30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言