學習LLM大語言模型之路(一) - 大型語言模型 (LLM) 入門指南:原理、工具與模型探索

更新於 發佈於 閱讀時間約 16 分鐘

學習內容

  • 了解 LLM 的基本原理(Transformer、Attention 機制)
  • 熟悉 Hugging Face、OpenAI API、LangChain 等工具
  • 探索不同 LLM 模型(GPT、Llama、Claude、Mistral)


LLM(大型語言模型) 的核心原理,包括 Transformer 架構Attention 機制,這些技術是現代 AI 模型(如 GPT-4、Llama 2、Mistral)的基礎。


LLM 的基本原理

1️⃣ Transformer 架構

Transformer 是 Google 在 2017 年提出的神經網路架構,專門用於處理自然語言處理(NLP)任務。它的核心概念是 自注意力機制(Self-Attention),能夠高效地處理長文本並捕捉上下文關係。

Transformer 的核心組件

Transformer 由 編碼器(Encoder)解碼器(Decoder) 組成:

  • 編碼器:將輸入文本轉換為向量表示
  • 解碼器:根據編碼器的輸出生成回應(如機器翻譯)

但 GPT-4、Llama 2 等模型只使用 解碼器(Decoder-Only),因為它們主要用於 生成式 AI

Transformer 架構圖

graph TD;
Input[輸入文本] --> Tokenization[分詞與編碼];
Tokenization --> Embedding[詞向量嵌入];
Embedding --> SelfAttention[自注意力機制];
SelfAttention --> FFN[前饋神經網路];
FFN --> Output[輸出結果]


2️⃣ Attention 機制

什麼是 Attention?

Attention 是 Transformer 的核心技術,它允許模型在處理文本時 關注不同的詞語,而不是像 RNN 那樣逐字處理。這使得 Transformer 能夠捕捉 長距離依賴關係,提升語言理解能力。

Self-Attention(自注意力)

Self-Attention 讓每個詞根據 上下文 來決定應該關注哪些詞。例如:

  • 在句子 "The cat sat on the mat." 中,"cat" 可能會關注 "sat" 和 "mat",而不是 "the"。

計算步驟

1.詞向量嵌入(Embedding)每個詞轉換為向量,例如:

word_embedding = {"cat": [0.1, 0.3], "sat": [0.5, 0.7], "mat": [0.2, 0.4]}

2.計算 Query(查詢)、Key(鍵)、Value(值)

Q = Wq * word_embedding
K = Wk * word_embedding
V = Wv * word_embedding

3.計算注意力分數(Softmax)

attention_score = softmax(Q * K.T / sqrt(d_k))

4.加權求和得到輸出

output = attention_score * V


Multi-Head Attention(多頭注意力)

Transformer 使用 多個注意力機制 來捕捉不同層次的語言特徵:

graph TD;
Input[輸入文本] --> MultiHeadAttention[多頭注意力];
MultiHeadAttention --> FFN[前饋神經網路];
FFN --> Output[輸出結果]


3️⃣ Transformer vs. 傳統 NLP

raw-image


4️⃣ LLM 如何應用 Transformer?

現代 LLM(如 GPT-4、Llama 2)基於 Transformer,並使用 大規模數據 進行訓練:

  • GPT-4:基於 Decoder-Only Transformer
  • BERT:基於 Encoder-Only Transformer
  • Llama 2:開源 Transformer 模型


熟悉 Hugging Face、OpenAI API、LangChain

這三個工具是 LLM 開發的核心技術,它們各自負責不同的功能:

  • Hugging Face:開源 LLM 模型管理與微調
  • OpenAI API:商業 LLM(如 GPT-4)的 API 接口
  • LangChain:LLM 應用開發框架,整合檢索增強生成(RAG)


1️⃣ Hugging Face

🔹 什麼是 Hugging Face?

Hugging Face 是 開源 AI 平台,提供 LLM 模型、數據集、微調工具,讓開發者能夠輕鬆使用 GPT、BERT、Llama 2 等模型。

🔹 主要功能

模型庫(Model Hub):超過 10,000+ LLM 模型

Transformers 套件:簡單載入 LLM 模型

微調(Fine-Tuning):使用 LoRA、PEFT 進行高效微調

Datasets:開源數據集,適用於 NLP 訓練

🔹 安裝 Hugging Face

pip install transformers

🔹 使用 Hugging Face 載入 LLM

from transformers import AutoModelForCausalLM, AutoTokenizer

# 載入 Llama 2 模型
model_name = "meta-llama/Llama-2-7b-hf"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# 測試輸入
text = "LLM 是什麼?"
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs)

# 解碼輸出
print(tokenizer.decode(outputs[0]))


2️⃣ OpenAI API

🔹 什麼是 OpenAI API?

OpenAI API 提供 GPT-4、GPT-3.5 等商業 LLM,適用於 聊天機器人、文本生成、程式碼輔助

🔹 主要功能

GPT-4 / GPT-3.5:高效能 LLM

DALL·E:AI 圖像生成

Whisper:語音轉文字

Function Calling:讓 LLM 呼叫 API

🔹 安裝 OpenAI API

pip install openai

🔹 使用 OpenAI API

import openai

openai.api_key = "你的 API 金鑰"

response = openai.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "你好,請介紹 LLM"}]
)

print(response.choices[0].message.content)


3️⃣ LangChain

🔹 什麼是 LangChain?

LangChain 是 LLM 應用開發框架,可以輕鬆整合 LLM、向量數據庫、檢索增強生成(RAG)

🔹 主要功能

LLM 整合:支援 Hugging Face、OpenAI API

向量數據庫:FAISS、Pinecone、Weaviate

檢索增強生成(RAG):讓 LLM 使用外部知識庫

Agent & Tools:讓 LLM 具備工具調用能力

🔹 安裝 LangChain

pip install langchain

🔹 使用 LangChain 整合 OpenAI API

from langchain.chat_models import ChatOpenAI
from langchain.schema import AIMessage, HumanMessage

# 初始化 GPT-4
llm = ChatOpenAI(model_name="gpt-4", temperature=0.7)

# 測試對話
messages = [HumanMessage(content="請介紹 LangChain")]
response = llm(messages)

print(response.content)

🔹 使用 LangChain + 向量數據庫

from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.schema import Document

# 初始化向量嵌入
embeddings = OpenAIEmbeddings()

# 建立 FAISS 向量數據庫
documents = [
Document(page_content="LLM 是大型語言模型,如 GPT-4"),
Document(page_content="LangChain 是 LLM 應用框架"),
Document(page_content="FAISS 是向量搜索庫")
]
vector_db = FAISS.from_documents(documents, embeddings)

# 查詢向量數據庫
query = "什麼是 LangChain?"
docs = vector_db.similarity_search(query)
print(f"檢索結果: {docs[0].page_content}")


4️⃣ Hugging Face vs. OpenAI API vs. LangChain

raw-image


探索不同 LLM 模型

1️⃣ GPT 系列(OpenAI)

🔹 什麼是 GPT?

GPT(Generative Pre-trained Transformer)是 OpenAI 開發的 LLM,目前最新版本為 GPT-4,它基於 Transformer 架構,並使用 大規模數據預訓練,適用於 聊天機器人、文本生成、程式碼輔助

🔹 GPT-4 vs. GPT-3.5

raw-image

🔹 使用 GPT-4

import openai

openai.api_key = "你的 API 金鑰"

response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": "請介紹 GPT-4"}]
)

print(response["choices"][0]["message"]["content"])


2️⃣ Llama 2(Meta)

🔹 什麼是 Llama 2?

Llama 2 是 Meta(Facebook)開源的 LLM,適用於 企業應用、開源 AI 開發,它比 GPT 更開放,並且可以 本地運行

🔹 Llama 2 版本

raw-image

🔹 使用 Llama 2

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "meta-llama/Llama-2-7b-hf"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

text = "請介紹 Llama 2"
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs)

print(tokenizer.decode(outputs[0]))


3️⃣ Claude(Anthropic)

🔹 什麼是 Claude?

Claude 是 Anthropic 開發的 LLM,專注於 安全性與對齊(Alignment),適用於 企業 AI、法律、金融

🔹 Claude 版本

raw-image

🔹 使用 Claude API

import anthropic

client = anthropic.Client(api_key="你的 API 金鑰")

response = client.messages.create(
model="claude-2",
messages=[{"role": "user", "content": "請介紹 Claude"}]
)

print(response["content"])


4️⃣ Mistral(Mistral AI)

🔹 什麼是 Mistral?

Mistral 是 Mistral AI 開發的開源 LLM,專注於 輕量化、高效能,適合 本地運行與企業應用

🔹 Mistral 版本

raw-image

🔹 使用 Mistral

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "mistralai/Mistral-7B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

text = "請介紹 Mistral"
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs)

print(tokenizer.decode(outputs[0]))


5️⃣ 如何選擇 LLM?

raw-image


以上是針對LLM(大型語言模型)的初步理解和認識,但裡面每個部份都還可以做更深入的探討,就留著後續的章節再繼續做介紹吧。








留言
avatar-img
留言分享你的想法!
avatar-img
宅D嘉的開發人生
21會員
50內容數
加密貨幣很有趣,遊戲開發也很有趣,AI也有點意思,身為一個跨多領域的軟體工程師,喜歡研究新鮮的事物,歡迎來到我的世界,一起坐上這艘開往未來探索新奇的列車。
你可能也想看
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 129 中說,Bidirectional Encoder Representations from Transformers (BER
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 129 中說,Bidirectional Encoder Representations from Transformers (BER
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 在 AI說書 - 從0開始 - 127 中提及: Transformer 的關鍵參數為: 原始 Transformer 模型中,左圖的 N = 6 原始 Tran
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 在 AI說書 - 從0開始 - 127 中提及: Transformer 的關鍵參數為: 原始 Transformer 模型中,左圖的 N = 6 原始 Tran
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 39 至 AI說書 - 從0開始 - 69 的第二章內容,我們拿 Encoder 出來看: 幾點注意如下: BERT 模型使用 M
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 39 至 AI說書 - 從0開始 - 69 的第二章內容,我們拿 Encoder 出來看: 幾點注意如下: BERT 模型使用 M
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformer 可以透過繼承預訓練模型 (Pretrained Model) 來微調 (Fine-Tune) 以執行下游任務。 Pretrained Mo
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformer 可以透過繼承預訓練模型 (Pretrained Model) 來微調 (Fine-Tune) 以執行下游任務。 Pretrained Mo
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformers for Natural Language Processing and Computer Vision, 2024 這本書中講 Trainin
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformers for Natural Language Processing and Computer Vision, 2024 這本書中講 Trainin
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 延續AI說書 - 從0開始 - 22解釋Foundation Model與Engines意涵後,我們來試用看看ChatGPT。 嘗試問以下問題:Provide a
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 延續AI說書 - 從0開始 - 22解釋Foundation Model與Engines意涵後,我們來試用看看ChatGPT。 嘗試問以下問題:Provide a
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在AI說書 - 從0開始 - 17中,介紹了大型語言模型 (LLM)世界裡面常用到的Token,現在我們來談談OpenAI的GPT模型如何利用Inference
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在AI說書 - 從0開始 - 17中,介紹了大型語言模型 (LLM)世界裡面常用到的Token,現在我們來談談OpenAI的GPT模型如何利用Inference
Thumbnail
大型語言模型(Large Language Model,LLM)是一項人工智慧技術,其目的在於理解和生成人類語言,可將其想像成一種高階的「文字預測機器」,然而,它們並非真正理解語言。除了在上篇介紹的技巧可以協助我們在使用 LLM 時給予指示之外,今天我們會介紹使用 LLM 的框架。
Thumbnail
大型語言模型(Large Language Model,LLM)是一項人工智慧技術,其目的在於理解和生成人類語言,可將其想像成一種高階的「文字預測機器」,然而,它們並非真正理解語言。除了在上篇介紹的技巧可以協助我們在使用 LLM 時給予指示之外,今天我們會介紹使用 LLM 的框架。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News