大模型產品化手冊:工程化方法與實踐

[美] 克裏斯托弗·布魯索(Christopher Brousseau)馬特·夏普(Matt Sharp)著 殷海英 譯

  • 大模型產品化手冊:工程化方法與實踐-preview-1
  • 大模型產品化手冊:工程化方法與實踐-preview-2
  • 大模型產品化手冊:工程化方法與實踐-preview-3
大模型產品化手冊:工程化方法與實踐-preview-1

商品描述

"大多數商業軟件通常采用疊代開發的方式,部署後還可以進行顯著的改進和調整。與此不同,大語言模型(LLM)開發成本高、修改難度大,因此需要在前期進行精心的規劃、嚴格的數據標準控制及精準的技術實現。將LLM集成到實際產品中,會影響運營的方方面面,包括應用生命周期、數據處理流程、計算成本、安全性等。如果操作不當,可能導致高昂的失敗成本。 《大模型產品化手冊:工程化方法與實踐》將介紹如何制訂一個LLMOps計劃,幫助你將AI應用從設計順利過渡到交付。你將學習如何準備LLM數據集,掌握高效的訓練技巧,如LoRA(低秩適應)和RLHF(基於人類反饋的強化學習),以及如何通過行業基準來評估模型性能。在學習過程中,你還將通過三個有趣的項目,實踐所學的技能:創建並訓練定制的大語言模型,開發一個VSCode AI編碼插件,以及將小型模型部署到樹莓派上。 主要內容 ? 平衡成本與性能 ? 再訓練與負載測試 ? 針對普通硬件優化模型 ? 在Kubernetes集群上部署"

作者簡介

"Christopher Brousseau是摩根大通的一名資深機器學習工程師(Machine Learning Engineer,MLE),擁有語言學和本地化背景。他專註於語言學驅動的自然語言處理(Nature Language Processing,NLP),尤其在國際化領域有深入研究,並曾在初創公司和財富500強企業中成功領導過機器學習和數據產品項目。Matt Sharp是一名工程師、數據科學家,也是在MLOps領域經驗豐富的技術領導者。他曾為初創公司和**科技公司成功領導過多個數據項目。Matt擅長在生產環境中部署、管理和擴展機器學習模型,無論生產環境的具體形式如何。"

目錄大綱

目    錄

第1章  語言的覺醒:為何大語言模型引起了廣泛關註  1

1.1  大語言模型加速信息傳遞  2

1.2  大語言模型應用中的自建與采購決策權衡  6

1.2.1  采購:成熟的路徑選擇  6

1.2.2  構建:不走尋常路  7

1.2.3  重要提示:即刻擁抱未來  12

1.3  破除迷思  14

1.4  本章小結  16

第2章  大語言模型技術內幕:語言建模深度解析  17

2.1  語言建模  18

2.1.1  語言特征  19

2.1.2  符號學  23

2.1.3  多語言自然語言處理  25

2.2  語言建模技術  26

2.2.1  N-gram與基於語料庫的技術  27

2.2.2  貝葉斯技術  29

2.2.3  馬爾可夫鏈  33

2.2.4  連續語言建模  35

2.2.5  詞向量技術(Embedding)  39

2.2.6  多層感知機  40

2.2.7  循環神經網絡和長短時記憶網絡  42

2.2.8  註意力機制  49

2.3  註意力機制即一切  51

2.3.1  編碼器  51

2.3.2  解碼器  53

2.3.3  Transformer  54

2.4  超大規模變換器  56

2.5  本章小結  60

第3章  大語言模型運維:構建LLM平臺  63

3.1  大語言模型運維簡介  63

3.2  大語言模型的運維挑戰  64

3.2.1  漫長的下載時間  64

3.2.2  更長的部署時間  65

3.2.3  延遲  66

3.2.4  管理GPU  66

3.2.5  文本數據的特殊性  67

3.2.6  token限制引發瓶頸  67

3.2.7  幻覺導致混淆  69

3.2.8  偏見與倫理考量  70

3.2.9  安全問題  70

3.2.10  控制成本  72

3.3  LLMOps要點  72

3.3.1  壓縮  73

3.3.2  分布式計算  80

3.4  運行大語言模型的基礎設施  84

3.4.1  數據基礎設施  86

3.4.2  實驗跟蹤器  87

3.4.3  模型註冊表  87

3.4.4  特征存儲  88

3.4.5  向量數據庫  89

3.4.6  監控系統  90

3.4.7  支持GPU的工作站  91

3.4.8  部署服務  91

3.5  本章小結  92

第4章  大語言模型數據工程:構建成功的基石  95

4.1  模型是基礎  96

4.1.1  GPT  97

4.1.2  BLOOM  97

4.1.3  LLaMA  98

4.1.4  Wizard  98

4.1.5  Falcon  99

4.1.6  Vicuna  99

4.1.7  Dolly  100

4.1.8  OpenChat  100

4.2  大語言模型的評估  101

4.2.1  文本評估指標  101

4.2.2  行業基準  104

4.2.3  負責任的AI基準測試  108

4.2.4  開發自定義基準測試  111

4.2.5  評估代碼生成器  113

4.2.6  評估模型參數  114

4.3  大語言模型的數據  116

4.3.1  你應該了解的數據集  116

4.3.2  數據清理與準備  120

4.4  文本處理器  125

4.4.1  分詞化  125

4.4.2  嵌入  130

4.5  準備一個Slack數據集  132

4.6  本章小結  133

第5章  訓練大語言模型:如何生成生成器  135

5.1  多GPU訓練環境  136

5.1.1  設置  136

5.1.2  庫  139

5.2  基礎的訓練技術  141

5.2.1  從零開始  143

5.2.2  遷移學習(微調)  149

5.2.3  提示工程(Prompting)  153

5.3  高級訓練技術  154

5.3.1  提示調優  155

5.3.2  使用知識蒸餾進行微調  160

5.3.3  基於人類反饋的強化學習  164

5.3.4  專家混合模型  166

5.3.5  LoRA與PEFT  169

5.4  訓練技巧與竅門  174

5.4.1  訓練數據規模的註意事項  174

5.4.2  高效訓練  174

5.4.3  局部極小值陷阱  175

5.4.4  超參數調優技巧  176

5.4.5  關於操作系統的說明  176

5.4.6  激活函數的建議  176

5.5  本章小結  177

第6章  LLM服務:實用指南  179

6.1  構建LLM服務  179

6.1.1  模型編譯  180

6.1.2  大語言模型的存儲策略  186

6.1.3  自適應請求批處理  188

6.1.4  流量控制  189

6.1.5  流式響應  191

6.1.6  特征存儲  192

6.1.7  檢索增強生成  195

6.1.8  LLM服務庫  198

6.2  設置基礎設施  199

6.2.1  集群配置  200

6.2.2  自動擴展  202

6.2.3  滾動更新  206

6.2.4  推理圖  208

6.2.5  監控  211

6.3  生產環境中的挑戰  214

6.3.1  模型更新與重新訓練  214

6.3.2  負載測試  214

6.3.3  排查高延遲問題  218

6.3.4  資源管理  220

6.3.5  成本工程  220

6.3.6  安全性  221

6.4  邊緣部署  223

6.5  本章小結  224

第7章  提示工程:成為LLM的“專家”  227

7.1  提示你的模型  227

7.1.1  少樣本提示  228

7.1.2  單樣本提示  229

7.1.3  零樣本提示  231

7.2  提示工程的基礎  232

7.2.1  提示的結構  233

7.2.2  提示超參數之外  235

7.2.3  挖掘訓練數據  236

7.3  提示工程工具  237

7.3.1  LangChain  238

7.3.2  Guidance  239

7.3.3  DSPy  241

7.3.4  其他工具雖可用,但……  242

7.4  高級提示工程技術  242

7.4.1  為大語言模型提供工具  242

7.4.2  ReAct  245

7.5  本章小結  248

第8章  大語言模型運維:構建 LLM平臺  249

8.1  構建應用程序  249

8.1.1  前端流式傳輸  250

8.1.2  保持歷史記錄  254

8.1.3  與聊天機器人交互的功能  257

8.1.4  token計數  260

8.1.5  檢索增強生成(RAG)的應用  261

8.2  邊緣應用  262

8.3  大語言模型代理  265

8.4  本章小結  272

第9章  創建一個大語言模型項目: 重新實現LLama 3  275

9.1  實現Meta的LLama模型  276

9.1.1  分詞化與配置  276

9.1.2  數據集、數據加載、評估與生成  278

9.1.3  網絡架構  283

9.2  簡化的LLama模型  286

9.3  讓它變得更好  290

9.3.1  量化  291

9.3.2  LoRA  292

9.3.3  完全分片數據並行——量化LoRA  295

9.4  部署到Hugging Face Hub Space  296

9.5  本章小結  299

第10章  創建編程助手項目:這個項目可以助你事半功倍  301

10.1  我們的模型  302

10.2  數據為王  304

10.2.1  我們的向量數據庫  305

10.2.2  我們的數據集  305

10.2.3  使用RAG  309

10.3  構建VS Code擴展  312

10.4  經驗總結與下一步行動  319

10.5  本章小結  322

第11章  在樹莓派上部署大語言模型:性能極限挑戰  323

11.1  設置你的樹莓派  324

11.1.1  Pi Imager  324

11.1.2  連接到Pi  327

11.1.3  軟件安裝與更新  329

11.2  模型準備  331

11.3  模型服務  332

11.4  改進措施  334

11.4.1  使用更好的界面  335

11.4.2  調整量化方式  335

11.4.3  增加多模態能力  336

11.4.4  在Google Colab上部署模型  340

11.5  本章小結  343

第12章  生產環境,瞬息萬變:一切才剛剛開始  345

12.1  概覽  345

12.2  大語言模型的未來  346

12.2.1  政府與監管  347

12.2.2  大語言模型正變得更大  350

12.2.3  多模態空間  356

12.2.4  數據集  357

12.2.5  解決幻覺問題  358

12.2.6  新硬件  364

12.2.7  智能體將變得有用  365

12.3  最終思考  369

12.4  本章小結  369

附錄A  語言學的歷史  371

附錄B  基於人類反饋的強化學習  379

附錄C  多模態潛在空間  383