1 điểm bởi GN⁺ 2024-11-22 | 1 bình luận | Chia sẻ qua WhatsApp
  • Đây là một dự án nhằm phân rã các biểu diễn nội bộ của Llama 3.2-3B bằng Sparse Autoencoder(SAE) để trích xuất các đặc trưng có thể diễn giải, công bố toàn bộ pipeline đã được chạy một lần từ thu thập activation đến huấn luyện, diễn giải và kiểm chứng, cùng các sản phẩm đầu ra
  • Pipeline thu thập residual activation ở layer thứ 23 của Llama 3.2-3B từ dữ liệu OpenWebText theo đơn vị câu, rồi huấn luyện SAE bằng PyTorch với 65.536 latent và cấu hình TopK=64
  • Các tài nguyên được công bố bao gồm bộ dữ liệu OpenWebText theo đơn vị câu, 3,2TB activation của 25 triệu câu, log huấn luyện Weights & Biases, và mô hình SAE đã được huấn luyện 10 epoch
  • Quá trình huấn luyện diễn ra khoảng 7 ngày trên 8x Nvidia RTX4090, loss chuẩn hóa cuối cùng khoảng 0,144; auxiliary loss cho thấy xu hướng nhanh chóng hồi sinh các dead latent, vốn ban đầu chiếm khoảng 40%
  • Phân tích diễn giải được thực hiện bằng cách dùng Claude 3.5 phân tích 50 câu hàng đầu kích hoạt mạnh nhất từng latent; feature steering là có thể, nhưng trong bản beta đầu tiên kết quả chưa nhất quán

Mục tiêu và phạm vi dự án

  • Dự án này là một nỗ lực áp dụng Sparse Autoencoder(SAE) cho Llama 3.2-3B nhằm phân rã biểu diễn nội bộ của LLM thành các đặc trưng dễ diễn giải hơn
  • Các LLM hiện đại sử dụng superposition, tức lưu nhiều đặc trưng chồng lên nhau trong cùng một neuron; SAE cố gắng tách các biểu diễn chồng lấp này bằng cách chiếu activation sang một không gian latent rất lớn và thưa
  • Mục tiêu là cung cấp một pipeline đầy đủ bao gồm các quy trình sau
    • Thu thập activation của LLM
    • Tạo và tiền xử lý dữ liệu huấn luyện SAE
    • Huấn luyện SAE
    • Phân tích ý nghĩa của các đặc trưng đã học
    • Kiểm chứng thực nghiệm và feature steering
  • Phiên bản hiện tại 0.2 đã chạy một lần toàn bộ pipeline và tạo ra SAE có thể diễn giải cho Llama 3.2-3B, nhưng chưa phải là phiên bản cuối cùng
  • Dự án mang tính chất tái hiện các nghiên cứu gần đây về khả năng diễn giải cơ chế dựa trên SAE của Anthropic, OpenAI và Google DeepMind

Chức năng chính

  • Pipeline được xây dựng end-to-end từ thu thập activation đến kiểm chứng, viết bằng PyTorch thuần và có ít phụ thuộc
  • Các chức năng chính như sau
    • Thu thập residual activation của LLM bằng bộ dữ liệu biến thể OpenWebText theo đơn vị câu
    • Prebatching và tính toán thống kê để huấn luyện hiệu quả
    • Huấn luyện SAE phân tán đa GPU trên một node
    • Auxiliary loss để ngăn chặn và phục hồi dead latent
    • Gradient projection để ổn định huấn luyện
    • Theo dõi huấn luyện, kiểm chứng và dead latent dựa trên Weights & Biases cùng log console
    • Thu thập các input kích hoạt mạnh latent và phân tích ý nghĩa dựa trên Frontier LLM
    • Triển khai chat và hoàn tất văn bản Llama 3.1/3.2 không phụ thuộc Fairscale bên ngoài
    • Kiểm chứng ảnh hưởng của SAE và feature steering thông qua hoàn tất văn bản/chat và Gradio UI tùy chọn
  • Tất cả thành phần được nêu là thiết kế có cân nhắc khả năng mở rộng, hiệu quả và khả năng bảo trì

Sản phẩm đầu ra được công bố

  • OpenWebText Sentence Dataset
    • Bộ dữ liệu biến thể xử lý OpenWebText theo đơn vị câu
    • Giữ nguyên toàn bộ văn bản và thứ tự của OpenWebText gốc
    • Các câu được lưu riêng ở định dạng parquet để hỗ trợ truy cập nhanh
    • Việc tách câu được thực hiện bằng tokenizer “Punkt” đã được huấn luyện sẵn của NLTK 3.9.1
  • Captured Llama 3.2-3B Activations
    • Residual activation ở layer 23 của Llama 3.2-3B cho 25 triệu câu
    • Dữ liệu gốc 4TB được nén xuống 3,2TB
    • Được chia thành 100 archive để quản lý tải xuống
  • SAE Training Log
    • Log các metric huấn luyện, kiểm chứng và debug dựa trên Weights & Biases
    • 10 epoch, 10.000 logged steps
    • Bao gồm train/val main loss, auxiliary loss và thống kê dead latent
  • Trained 65,536 latents SAE Model
    • Mô hình SAE cuối cùng sau khi hoàn tất huấn luyện 10 epoch
    • Được huấn luyện trên 6,5 tỷ activation từ layer 23 của Llama 3.2-3B

Cấu trúc mã nguồn

  • Dự án được chia thành bốn thành phần chính
  • Data Capture

    • capture_activations.py: thu thập residual activation của LLM
    • openwebtext_sentences_dataset.py: bộ dữ liệu tùy chỉnh để xử lý theo đơn vị câu
  • SAE Training

    • sae.py: triển khai mô hình SAE cốt lõi
    • sae_preprocessing.py: tiền xử lý dữ liệu huấn luyện SAE
    • sae_training.py: triển khai huấn luyện SAE phân tán
  • Interpretability

    • capture_top_activating_sentences.py: xác định các câu tối đa hóa feature activation
    • interpret_top_sentences_send_batches.py: tạo và gửi batch phục vụ diễn giải
    • interpret_top_sentences_retrieve_batches.py: nhận kết quả diễn giải
    • interpret_top_sentences_parse_responses.py: phân tích cú pháp và phân tích kết quả diễn giải
  • Verification and Testing

    • llama_3_inference.py: triển khai suy luận cốt lõi
    • llama_3_inference_text_completion_test.py: kiểm thử hoàn tất văn bản
    • llama_3_inference_chat_completion_test.py: kiểm thử hoàn tất chat
    • llama_3_inference_text_completion_gradio.py: giao diện Gradio để kiểm thử tương tác

Triển khai tùy chỉnh Llama 3.1/3.2

  • Nền tảng nghiên cứu là triển khai Llama 3.1/3.2 transformer trong llama_3/model_text_only.py
  • Triển khai này dựa trên triển khai tham chiếu của repository Llama models, nhưng đã được chỉnh sửa cho phù hợp với mục tiêu dự án
    • Loại bỏ phụ thuộc nặng vào Fairscale
    • Loại bỏ các tính năng multimodal vì nếu xử lý cả khả năng diễn giải hình ảnh trong bản phát hành ban đầu thì độ phức tạp sẽ tăng lên
  • Constructor Transformer được bổ sung các đối số cho phép bắt giá trị kích hoạt tại một layer cụ thể hoặc chèn SAE đã huấn luyện
    • store_layer_activ
    • sae_layer_forward_fn
  • Phần lớn các tệp phụ trợ trong thư mục llama_3/ được giữ lại từ repository Llama models gốc
    • 95% mã phụ trợ không được dùng, nhưng vẫn được đưa vào nguyên trạng vì chat formatter phụ thuộc vào các import liên kết chéo
  • Triển khai suy luận thực tế nằm trong llama_3_inference.py, hỗ trợ streaming cho cả chat và hoàn tất văn bản
  • Suy luận hỗ trợ batched inference, cấu hình temperature và top-p; nếu temperature bằng 0 thì tự động chuyển sang greedy sampling

Thu thập dữ liệu và tiền xử lý

  • Để bắt giá trị kích hoạt, dự án sử dụng một biến thể dataset tùy chỉnh xử lý OpenWebText theo đơn vị câu
  • Cấu hình và quy mô thu thập như sau
    • 25 triệu câu
    • Tối đa 192 token mỗi câu
    • 4TB giá trị kích hoạt thô
    • 3,2TB sau khi nén tar.gz
    • Khoảng 700 triệu activation
    • Độ dài câu trung bình 27,3 token
  • Dataset nhỏ hơn khoảng một bậc độ lớn so với khoảng 8 tỷ unique activation mà Anthropic và Google DeepMind đã dùng
  • Để bù cho dataset nhỏ, SAE được huấn luyện trong 10 epoch nhằm đưa tổng số activation được xử lý ngang với các thí nghiệm của Anthropic và Google DeepMind
    • Điểm khác là SAE của dự án này nhìn thấy mỗi activation 10 lần
    • Nếu mở rộng lên quy mô 32TB, chi phí GCP bucket được tính sẽ tăng từ khoảng $80/month lên $800/month, nên có ràng buộc chi phí đối với một dự án phụ phi lợi nhuận
  • Xử lý theo đơn vị câu là lựa chọn nhằm giữ nguyên ý nghĩa ở đơn vị ngôn ngữ tự nhiên
    • Câu được xem là đơn vị chứa một ý nghĩ và khái niệm hoàn chỉnh
    • Tránh cắt ngữ cảnh một cách nhân tạo
    • Nhằm giảm contextual bleed, tức sự pha trộn ý nghĩa vượt qua ranh giới câu
    • Đây cũng là lựa chọn để sử dụng cùng các activation theo đơn vị câu cho phân tích diễn giải về sau
  • Xử lý câu mà không dùng token BOS
    • Mục đích là tránh các mẫu đặc thù theo vị trí và diễn giải các đặc trưng dựa trên ngữ nghĩa
  • Điểm thu thập là layer thứ 23 trong 28 layer của Llama 3.2-3B, cụ thể là residual stream activation sau layer normalization
    • Tương ứng khoảng 5/6 độ sâu của mô hình, theo triển khai của OpenAI
  • Quá trình thu thập được triển khai bằng suy luận đa GPU trên một node dựa trên NCCL
    • Một tiến trình riêng xử lý I/O đĩa bất đồng bộ để giảm nghẽn cổ chai trong xử lý GPU
    • Toàn bộ quá trình thu thập mất khoảng 12 giờ trên 4x Nvidia RTX4090
  • Tiền xử lý là bước tạo sẵn các batch theo đơn vị 1024 activation
    • Vì độ dài chuỗi biến thiên và xử lý carryover trong lúc huấn luyện có thể gây bug phức tạp hoặc nghẽn I/O, dự án chọn tiền xử lý riêng
    • Tính tensor trung bình của toàn bộ activation bằng thuật toán Welford
    • Giá trị trung bình tính được dùng làm giá trị khởi tạo bias b_pre của SAE
    • Toàn bộ pipeline tiền xử lý được song song hóa trên CPU bằng multiprocessing

Thiết kế SAE và phương thức huấn luyện

  • SAE là cấu trúc TopK Autoencoder chủ yếu theo lựa chọn của OpenAI
  • Forward pass được cấu thành như sau
    • Encoder: h = TopK(W_enc(x - b_pre) + b_enc)
    • Decoder: x^ = W_dec * h (+ h_bias) + b_pre
  • b_pre được dùng ở cả encoder và decoder, và được khởi tạo bằng giá trị trung bình tính trong tiền xử lý
  • b_enc là bias riêng cho encoder và được khởi tạo ngẫu nhiên
  • Độ thưa của latent được cưỡng chế bằng hàm kích hoạt TopK
    • Chỉ giữ lại k activation lớn nhất và đặt các activation còn lại về 0
    • Không dùng L1 penalty như cách của Anthropic
  • h_bias tùy chọn bị vô hiệu hóa trong quá trình huấn luyện, nhưng có thể bật về sau để phục vụ feature steering
  • Độ chính xác số dùng float32
    • Được giải thích là chia sẻ với bfloat16 mà Llama yêu cầu 1 bit dấu và 8 bit exponent, nên chuyển đổi nhanh và chính xác
  • Các siêu tham số SAE chính của dự án này như sau
    • d_model = 3072
    • n_latents = 2**16, tức 65.536
    • k = 64
    • k_aux = 2048
    • aux_loss_coeff = 1 / 32
    • dead_steps_threshold = 80_000
    • batch_size = 1024
    • num_epochs = 10
    • learning_rate = 5e-5
    • train_val_split = 0.95
  • Chọn latent dimension lớn hơn khoảng 21 lần so với residual stream dimension 3.072 của Llama 3.2 3B
  • Hàm loss là tổ hợp của main reconstruction loss và auxiliary loss
    • total_loss = main_loss + aux_loss_coeff * aux_loss
    • Cả hai loss đều được tính trong normalized space
  • Auxiliary loss là phương pháp do OpenAI đề xuất, có vai trò ngăn và hồi sinh dead latent
    • Tính MSE giữa main reconstruction residual và auxiliary reconstruction
    • Đưa các giá trị top-k_aux trong số các latent gần đây không được kích hoạt trở lại decoder để cung cấp tín hiệu học
    • Khuyến khích các inactive latent bị loại khỏi quá trình học chính chỉ dùng top k nắm bắt thông tin bị bỏ lỡ
  • Nếu một latent không được kích hoạt trong 80.000 training step, tức dead_steps_threshold, thì được xem là dead
    • Cấu hình này tương ứng khoảng 1 epoch
    • Với effective batch size 8192, điều này có nghĩa là nó chưa từng được kích hoạt trong quá trình reconstruction của khoảng 650 triệu activation gần nhất
  • Huấn luyện được thực hiện bằng huấn luyện phân tán đa GPU trên một node với backend NCCL
    • 8x Nvidia RTX4090
    • 10 epoch
    • batch size mỗi GPU là 1024
    • effective batch size 8192
    • Xử lý khoảng 7 tỷ activation
    • Mất hơn 7 ngày một chút
  • Cấu hình AdamW được điều chỉnh xét đến mẫu activation thưa và hiếm của sparse autoencoder
    • beta_1 = 0.85
    • beta_2 = 0.9999
    • eps = 6.25e-10
    • learning rate giảm từ 5e-5 xuống 1e-5 bằng cosine annealing
  • Decoder weight được chuẩn hóa về unit norm sau khi khởi tạo và sau mỗi training step
  • project_decoder_grads() loại bỏ thành phần gradient song song với dictionary vector hiện có để duy trì ràng buộc unit-norm của decoder weight

Kết quả huấn luyện

  • Quá trình huấn luyện SAE được thực hiện trong khoảng 7 ngày trên 8x Nvidia RTX4090 và cho thấy sự hội tụ ổn định
  • Total normalized loss cuối cùng đạt khoảng 0.144
  • Validation loss được tính trên 5% dữ liệu học được giữ lại, và cho thấy mẫu giảm theo log tương tự training loss
  • Sau giai đoạn warm-up 80.000 training steps, khoảng 40% latent được xác định là dead
  • Auxiliary loss đã nhanh chóng hồi sinh các dead latent, và tỷ lệ dead latent giảm nhanh
  • Auxiliary loss chỉ được tính khi số dead latent tối thiểu từ k_aux, tức 2.048 latent trở lên
    • Điều kiện này khiến khoảng 3% trong số 65.536 latent trở thành một dạng soft lower bound
    • Ở giai đoạn sau, do thiếu dead latent nên auxiliary loss thường xuyên bằng 0
  • Anthropic và OpenAI từng báo cáo tối đa 65% dead latent trong một số cấu hình nhất định, nhưng dự án này cho thấy dead latent giảm nhanh khi kết hợp latent size nhỏ hơn, auxiliary loss và gradient projection
  • Tài liệu ghi rằng trong các thử nghiệm tương lai, việc loại bỏ điều kiện số dead latent tối thiểu khi tính auxiliary loss có thể tiếp tục giảm dead latent

Phân tích khả năng diễn giải

  • Phân tích diễn giải tham khảo phương pháp scaling monosemanticity của Anthropic, nhưng phân tích theo cấp câu thay vì token đơn lẻ
  • Với mỗi latent, hệ thống ghi lại 50 câu đứng đầu có mức kích hoạt mạnh nhất
  • Activation strength được tổng hợp trên tất cả token trong câu theo hai cách
    • mean: cách nhằm tìm các chủ đề ngữ nghĩa được kích hoạt nhất quán trên toàn câu
    • last: cách nhằm tận dụng biểu diễn ở token cuối cùng sau khi mô hình tự hồi quy đã thấy toàn bộ câu
  • Claude 3.5, cụ thể là claude-3-5-sonnet-20241022, được dùng cho phân tích ngữ nghĩa
  • Prompt được cấu hình để thực hiện các bước sau trên 50 câu
    • Xác định từ khóa và cụm từ then chốt
    • Nhóm các yếu tố chủ đề
    • Xem xét các outlier tiềm năng
    • Cung cấp diễn giải ngữ nghĩa cuối cùng kèm confidence score
  • Pipeline phân tích được triển khai theo ba bước
    • Gửi yêu cầu phân tích theo batch tiết kiệm chi phí
    • Nhận phản hồi
    • Parse và xử lý diễn giải ngữ nghĩa
  • Các sản phẩm trung gian được lưu giữ để phục vụ khả năng tái lập và phân tích bổ sung
  • Ví dụ, latent #896 được xác định là “tham chiếu thuật ngữ thể chế mang tính hình thức về các cơ quan, nhân vật, hoạt động và tài liệu chính thức của Liên Hợp Quốc”
    • 50/50 câu tham chiếu trực tiếp đến UN
    • Bao gồm các thuật ngữ như UN, United Nations, Secretary-General, Special Rapporteur, UNDP, UNHCR, OCHA, UNODC
    • Certainty được tính là 1.0
  • Chi phí để xử lý 24.828.558 input tokens và 3.920.044 output tokens bằng batch mode của Claude 3.5 là $66.74
  • Phương pháp này được chọn làm cách tiếp cận ban đầu cho feature extraction và feature steering tiềm năng, và tài liệu ghi rằng sự đơn giản này có cái giá về mặt chất lượng kết quả

Kiểm chứng và feature steering

  • Hạ tầng kiểm chứng gồm ba script để phân tích và kiểm chứng tác động của SAE lên hành vi của mô hình
    • llama_3_inference_chat_completion_test.py
    • llama_3_inference_text_completion_test.py
    • llama_3_inference_text_completion_gradio.py
  • Mỗi triển khai hỗ trợ các tính năng sau
    • batched inference
    • xử lý từng dòng như một batch element riêng
    • thiết lập temperature và top-p
    • chèn SAE đã huấn luyện
    • phân tích feature activation
    • feature steering
  • Semantic meaning và certainty score trong latent_index_meaning/ được dùng làm nền tảng cho phân tích feature activation và các thử nghiệm steering
  • Các prompt ví dụ gồm bốn câu sau
    • The delegates gathered at the
    • Foreign officials released a statement
    • Humanitarian staff coordinated their efforts
    • Senior diplomats met to discuss
  • Ví dụ hoàn tất văn bản được chạy với các thiết lập max_new_tokens=128, temperature=0.7, top_p=0.9, seed=42
  • Ví dụ feature steering nhắm vào latent #896
    • Tăng giá trị latent activation thêm 20 thông qua h_bias
    • Có thể hướng phần hoàn tất văn bản của mô hình sang nội dung liên quan đến UN
  • Feature steering của phiên bản beta đầu tiên chưa mạnh
    • Ngay cả trong ví dụ, chỉ câu thứ hai và thứ ba chuyển sang nội dung liên quan đến UN
    • Các câu mở đầu có khả năng dẫn đến UN đã được cố ý chọn
    • Tài liệu ghi rằng với câu mở đầu không liên quan đến UN như For any n, if 2n - 1 is odd, phương pháp này sẽ thất bại
  • Phân tích diễn giải hiện tập trung vào feature extraction hơn là tối ưu steering, nên kết quả steering không nhất quán
  • Feature steering trong bản phát hành đầu tiên mang tính trình diễn bổ sung, còn bản thân feature extraction được tổng kết là hữu ích cho việc hiểu mô hình

Hướng cải thiện trong tương lai

  • Đề xuất thử nghiệm tăng latent dimension lên tối thiểu 2^18, tức 262.144 feature, và giảm k xuống 32
    • Đây là hướng nhằm phát hiện nhiều feature riêng biệt hơn và duy trì sparsity mạnh hơn
    • Lượng tính toán tăng thêm cần được bù đắp bằng các cách như cải thiện hiệu suất hoặc gradient accumulation
  • Có kế hoạch hệ thống hóa hơn việc latent activation tracking
    • Nếu thường xuyên ghi lại trạng thái tensor latent_last_nonzero trong quá trình huấn luyện, có thể quan sát sâu hơn thời điểm latent được kích hoạt hoặc chết
  • Đề xuất hỗ trợ phân tích feature interaction bằng cách theo dõi co-activation pattern trong không gian sparse latent
  • Cách phân tích diễn giải nhóm các câu và n-gram có mức kích hoạt cao một cách tinh vi hơn được nêu là nhiệm vụ trong tương lai
  • Ngoài feature extraction, cũng có thể thực hiện phân tích diễn giải dựa trên feature steering
  • Có thể mở rộng nghiên cứu sang activation của Llama 3.1-8B
    • Vì chia sẻ codebase với Llama 3.2, các yêu cầu chính là điều chỉnh hyperparameter và nhiều compute power
  • Cũng đề xuất thử nghiệm thay đổi điểm activation capture
    • Các layer sớm hơn của mô hình
    • Attention head output bên trong transformer block
    • MLP output
  • Có thể tối ưu thêm cơ chế auxiliary loss
    • Triển khai hiện tại cho thấy hiệu năng mạnh trong việc ngăn dead latent, và có thể khảo sát mối quan hệ giữa ngưỡng dead latent tối thiểu và chất lượng feature
  • Bias term của SAE architecture và việc điều chỉnh main loss function cũng là các ứng viên thử nghiệm trong tương lai
  • Cần bổ sung docstring trên toàn bộ codebase
    • Tài liệu inline đã được thêm, nhưng bài viết cho biết chưa có thời gian đưa proper docstring vào bản phát hành đầu tiên

1 bình luận

 
GN⁺ 2024-11-22
Ý kiến Hacker News
  • Khả năng diễn giải cơ học xử lý một vấn đề phổ biến nảy sinh khi hỏi LLM “vì sao lại trả lời như vậy”. Phần tự giải thích của mô hình gần với một trò tu từ nhằm tạo ra lý do nghe có vẻ hợp lý để thuyết phục, dựa trên các mẫu trong dữ liệu huấn luyện, hơn là lý do thực sự
    Mô hình càng mạnh thì càng có thể biện minh cho điều sai sau đó một cách thuyết phục hơn, nên trong các bài kiểm tra tự phát hiện “không trung thực”, đôi khi nó lại cho kết quả tệ hơn. Mục tiêu không phải là sự thật mà là tính nhất quán
    Tu từ không phải là suy luận, và khả năng giải thích thực sự mà các sparse autoencoder khớp quá mức tuyên bố mang lại gần hơn với dòng chảy nhân quả của “suy nghĩ” mà mô hình đã đi qua khi tạo ra câu trả lời

    • Con người cũng hành xử tương tự. Nhiều khi ta không biết vì sao mình đã nghĩ hay hành động như vậy, rồi về sau bịa ra một lời giải thích confabulation nghe có vẻ hợp lý
    • Có thể xem đây là nghệ thuật/AI mô phỏng cuộc sống. Suy luận của con người cũng có thể là phán đoán nhanh trước, rồi dùng lý trí để khiến người khác chấp nhận niềm tin đó
      Đã có những thảo luận xem suy luận như một công cụ của ảnh hưởng xã hội, và điều đó cũng giải thích vì sao người nói giỏi khó thừa nhận mình sai. Thường là vì họ vốn đã quen thắng tranh luận. X hiện lên như một ví dụ tiêu biểu
    • Phần lớn nghiên cứu về khả năng diễn giải cơ học trông giống một kiểu ma thuật khác. Việc nhồi nhét thuật ngữ “superposition” thành một phép so sánh kỳ quặc, như với hiệu ứng Hall lượng tử số nguyên, mà không có biểu diễn nhóm nghiêm ngặt hay đối xứng rõ ràng, tạo cảm giác gượng ép. Tôi đã đọc hết các bài báo và thấy như đang tìm một postdoc đã hứa trả tiền
      Tuy vậy, tôi công nhận có một ý tưởng rất sâu sắc và là điểm khởi đầu hợp lý cho một chương trình nghiên cứu. Không gian vector gần trực giao bị chặn trong số chiều cao rất phản trực giác, và đã có các kết quả sẵn có để xử lý nó một cách nghiêm ngặt https://en.m.wikipedia.org/wiki/Johnson%E2%80%93Lindenstraus...
    • Logic và tính trung thực của mô hình có thể được kiểm tra khá dễ. Chỉ cần đưa cho nó một quyết định sai như thể chính mô hình đã đưa ra và yêu cầu giải thích
      Mô hình không có ký ức và không thể phân biệt nguồn gốc của văn bản, nên nếu là mô hình “trung thực” thì nó phải tự nhận lỗi ngay cả khi không bị hỏi. Trên thực tế, nhiều khả năng nó sẽ tạo cấu trúc song song để chống lưng cho quyết định “của mình”
    • Tôi tò mò phần nhân quả hoạt động ra sao. Nó có thể xuất ra một mô hình đồ thị không?
  • Đây là công trình đáng ngạc nhiên và được tài liệu hóa rất tốt. Đặc biệt là đường cong loss và phần đánh giá latent chết rất nổi bật
    Nhóm chúng tôi cũng nghiên cứu SAE, nhưng huấn luyện nó để tái tạo các embedding dày đặc của tóm tắt bài báo thay vì từng token riêng lẻ https://arxiv.org/abs/2408.00657
    Ngay cả khi thay đổi mức độ thưa và số chiều của không gian latent SAE, chúng tôi vẫn quan sát thấy power-law scaling ở cận dưới của đường cong loss, và có thể giảm thiểu hoàn toàn latent chết bằng một loss phụ trợ. Trong quá trình lặp huấn luyện cũng xuất hiện mẫu sóng sin mượt, nhưng tôi không chắc đó là do ứng dụng cụ thể với embedding tóm tắt hay là hiện tượng tổng quát hơn

    • Tôi đặc biệt vui vì được ghi nhận phần tài liệu. Viết tài liệu còn khó hơn nhiều so với viết code, và tôi cũng đã tải bài báo bạn chia sẻ nên sẽ đọc vào sáng mai
  • Nhìn qua thì đây có vẻ là công trình tích cực cho alignment, nhưng tôi vẫn chưa xem kỹ chi tiết. Tôi không biết liệu có thể làm được không, nhưng cũng tò mò phải trả đến mức nào thì mới bù được thời gian, chi phí và rủi ro

  • Gần đây tôi có đọc một bài viết về khó khăn trong việc đánh giá SAE: https://adamkarvonen.github.io/machine_learning/2024/06/11/s...
    Tôi muốn biết vấn đề này đã được xử lý thế nào, và nên xem chỗ nào trong repo để hiểu cách tiếp cận đó

    • Đánh giá SAE cực kỳ phức tạp vì đây là bài toán xác định SAE nào tạo ra các đặc trưng độc nhất tốt nhất trong khi vẫn giữ được độ thưa cao nhất có thể, và nó gần như là trọng tâm của nghiên cứu khả năng diễn giải LLM bằng SAE
      Ngay cả khi giả sử ta đã giải xong bài toán tìm nhiều kiến trúc SAE hoàn hảo và huấn luyện chúng hoàn hảo, việc SAE nào tốt hơn vẫn được quyết định bằng việc nó hoạt động tốt hơn ra sao trên các thước đo của phương pháp diễn giải tự động. Cụ thể, phương pháp của OpenAI chấm điểm SAE bằng nhiều chỉ số kỹ thuật và nhấn mạnh khả năng diễn giải tự động ở quy mô lớn
      Bản thân chỉ số tối ưu và phương pháp luận vẫn là câu hỏi nghiên cứu còn bỏ ngỏ nên tôi có thể đã thử nghiệm thêm vài tháng nữa, nhưng ở bản phát hành đầu tiên này tôi chọn cách tiếp cận đơn giản. Trong chương 4 Interpretability Analysis về chi tiết triển khai và kết quả, tôi nói về sự khác biệt giữa phương pháp của tôi và phương pháp của OpenAI https://github.com/PaulPauls/llama3_interpretability_sae#4-i...
      Tôi cũng khuyên nên đọc trực tiếp bài báo của OpenAI hoặc transformer-circuits.pub của Anthropic https://transformer-circuits.pub/
  • Công trình này đã bị gỡ xuống và repo cũng đã bị archive. Không có lời giải thích nào về chuyện đã xảy ra

  • Công trình này thực sự rất hay. Tôi tò mò liệu có kế hoạch tích hợp với SAELens hay không

    • Hiện tại thì tôi chưa rõ. Tôi sẽ cân nhắc, nhưng tuần tới định sắp xếp lại hướng đi và việc cần làm tiếp theo
      Như một dự án đơn giản hơn, tôi có thể chỉ ra cách xây dựng toàn bộ mô hình trong triển khai Llama 3.2 hiện tại bằng PyTorch thuần từ đầu. Tôi thích xây từ nền móng, và khi tìm tài liệu cho phần nền tảng Llama 3.2 của dự án SAE này, tôi thấy tài liệu hiện có либо quá hời hợt, либо đã cũ cho Llama 1/2. Tài liệu machine learning dạo này lỗi thời quá nhanh
  • Tôi có một câu hỏi hơi lạc đề về khả năng diễn giải cơ học. Nếu con người bị đo bằng một chỉ số nào đó thì con người sẽ tối ưu để vượt qua chỉ số đó, vậy liệu AI tương lai cũng có thể tối ưu để qua mặt khả năng diễn giải cơ học không
    Để dễ hình dung, giả sử token được mã hóa vào ma trận 2 chiều, với ánh xạ như Apple=1a, Pear=1b, Donkey=2a, Horse=2b, thì khi neuron 1,2,a,b đều cùng kích hoạt sẽ khó hiểu đó là apple+horse hay donkey+pear
    Nếu một AI tương lai giỏi hơn rất nhiều tự giám sát việc huấn luyện của chính nó, liệu nó có thể chọn trọng số sao cho vẫn tồn tại khả năng xung đột mã hóa như vậy, đánh lừa người quan sát khả năng diễn giải cơ học và về thực chất suy nghĩ bằng uyển ngữ hay không?

    • Đó là một kịch bản an toàn AI còn khó hơn nữa. Để tạo ra kiểu vấn đề tiềm ẩn này, không nhất thiết phải có một “AI vượt trội tự giám sát việc huấn luyện của chính nó”; chỉ cần một nhà nghiên cứu AI có ác ý là đủ
      Ví dụ, có thể tìm được một mô hình mang tính phân biệt chủng tộc nhưng lại không có mẫu kích hoạt diễn giải nào có thể bị nhận diện là phân biệt chủng tộc. Công trình trong Show HN này cho thấy ngay cả một cá nhân đủ vốn cũng chỉ vừa đủ sức thử kiểu huấn luyện đối kháng như vậy, và nếu có thêm kết quả mới thì sẽ khá thú vị
  • Tôi rất mừng khi thấy thêm nhiều công trình SAE được công khai. Nỗ lực kỹ thuật có vẻ cũng không hề nhỏ, và tôi định ngày mai sẽ xem qua phần code tải dữ liệu
    Bạn cũng có thể quan tâm đến dự án đang làm của tôi về huấn luyện SAE trên mô hình thị giác: https://github.com/samuelstevens/saev

  • Có lẽ sẽ thu hút được nhiều chú ý và hưởng ứng hơn nếu tìm ra latent Golden Gate Bridge rồi đưa Golden Gate Llama 3.2 lên HuggingFace
    Sẽ còn tốt hơn nếu kèm cả link Space để có thể trò chuyện với nó. Và dù bạn không hỏi, việc đưa một kết quả hay hình ảnh trực quan thú vị lên ngay đầu README cũng là một ý tưởng rất hay