×
Community Blog Step-by-Step Membangun Large Language Model (LLM) dan VectorDB Alibaba Cloud yang Dapat Disesuaikan dan Hemat Biaya

Step-by-Step Membangun Large Language Model (LLM) dan VectorDB Alibaba Cloud yang Dapat Disesuaikan dan Hemat Biaya

Pemanfaatan Generative AI untuk bisnis dengan solusi cloud yang lebih efisien dan cost effective

By Aaron Handoko, Solution Architect

Introduction

Kami merekomendasikan penggunaan ECS untuk backend dan frontend. Jika pengguna akan menggunakan open-source, LLM (Large Language Model) dapat menggunakan GPU-ECS atau Platform untuk AI (Artificial Intelligence). Tutorial ini akan mencakup seluruh infrastruktur dan pengambilan selain bagian LLM. Kami menganggap pengguna memiliki LLM dan kunci API-nya. Data akan disimpan di AnalyticDB for PostgreSQL (ADBPG), di bawah arsitektur tingkat tinggi.

step_by_step_llm
Source: https://www.alibabacloud.com/blog/next-level-conversations-llm-%2B-vectordb-with-alibaba-cloud-is-customizable-and-cost-efficient_599985

Hal yang perlu disediakan:

1) Akun Alibaba Cloud
Klik disini untuk mendaftar ke halaman Cloud Alibaba.
2) Install Visual Studio Code here (Optional)
3) AnalyticDB for Postgres:
• Compute Node Specifications: 8 Cores, 32 GB Memory
• Compute Nodes: 2
• Compute Node Storage Capacity: 50 GB
• Configuration Information Summary: 16 Cores, 64 GB Memory, 100 GB ESSD PL1 Total Physical Storage (Single-Copy)
• Enable Vector Engine Optimization

4) Elastic Compute Service (ECS) Instance:
• Hardware: 8vCPU(s) 32 GiB
• Operating System: Ubuntu 22.04 64-bit
• Assign Public IP Address

5) Sampel Data untuk Percobaan: link

Kalau semua sudah berhasil di setup kita dapat memulai prosesnya.

Step-by-step LLM + ADBPG:

1) AnalyticDB for Postgres

a. Aktifkan Vector Engine Optimization
step_by_step_llm

  1. Klik Basic Information pada bagian kiri
  2. Pada bagian Vector Engine Optimization pastikan sudah di Enabled. Jika belum maka bisa di klik Enable.

b. Membuat Akun di AnalyticDB
Masuk ke dalam instance AnalyticDB yang sudah dibuat dengan mengeklik instance tersebut.

  1. Dibagian kiri klik Account Management
  2. Kemudian klik Create Account di sebelah kanan
  3. Isi nama Account dan Password dan catat. Pada percobaan di bawah ini “myaccount” sudah terbuat
    Annotation_2023_07_05_113715

c. Membuat Database di AnalyticDB

  1. Pada bagian kiri klik Database Connection
  2. Kemudian di bagian kanan klik Logon to Database. Tombol ini akan mengirimkan user ke laman DMS
  3. Klik kanan instance AnalyticDB kemudian klik Database Management
  4. Kemudian klik Create DB dan memberi nama Database yang diinginkan. Pada contoh ini adalah “db_llm”.

Annotation_2023_07_05_114026

Annotation_2023_07_05_114140

d. Membentuk Public Endpoint
Annotation_2023_07_05_114319

  1. Kembali ke halaman instance ADBPG, kemudian pada bagian kiri klik Database Connection
  2. Pada bagian Public Endpoint, aktifkan public endpoint agar dapat mengakses database dari ECS

e. Memasukkan Whitelist ECS Instance
Langkah berikutnya adalah memasukkan eip dari ECS Instance ke dalam whitelist ADBPG agar ECS dapat mendapatkan akses ke database.

  1. Masuk ke dalam console ECS.
  2. Kemudian copy eip dari ECS instance yang akan disambungkan (seperti contoh pada gambar).
  3. Masuk ke dalam console AnalyticDB for Postgres dan klik instance ADBPG yang sudah terbuat.
  4. Di menu kiri, klik Security Controls kemudian klik Create Whitelist dan masukkan eip dari ECS Instance.

step_by_step_llm

step_by_step_llm

2) Elastic Compute Service (ECS)

2.1. Menghubungkan dengan SSH melalui Virtual Studio Code (Optional)

  1. Pada bagian kiri klik SSH Key Pairs
  2. Kemudian klik “Create SSH Key Pair” untuk membentuk sebuah Key Pair. Masukkan nama keypair yang diinginkan. Setelah keypair terbentuk, file .pem akan terdownload
  3. Klik bind dan pilih instance ECS yang dibuat sebelumnya
    Annotation_2023_07_05_115445
  4. Membuka Visual Studio Code kemudian di bagian kiri pilih Extensions. Kemudian install Remote – SSH untuk dapat menghubungkan Visual Studio ke ECS.
    Annotation_2023_07_05_115713
  5. Setelah berhasil terinstall, pada bagian kiri bawah klik tombol ssh dan kemudian pilih Open SSH Configuration File. Kemudian bukalah config file. Di dalam config file isilah dengan command berikut.
    Annotation_2023_07_05_115926
  6. Klik kembali tombol ssh pada bagian kiri bawah kemudian pilih connect to Host dan pilih host yang sudah terbuat.
  7. Jika parameter yang sudah dimasukkan benar, maka user akan diminta untuk memasukkan password ECS
  8. Selamat!! Anda sudah terhubung pada ECS melalui Visual Studio Code.

2.2. Menghubungkan dengan SSH melalui Console (Optional)

  1. Membuka Instance pada ECS
  2. Kemudian klik connect dan pilih metode Workshop
  3. Pilih login with Password dan masukkan password ECS Instance

ERROR:

Jika mendapatkan error yang menunjukkan pesan “Password login not enabled” atau yang dapat terlihat dibawah ini, maka ECS belum memperbolehkan login menggunakan password.

step_by_step_llm

  1. Connect ECS melalui metode VNC
  2. Melakukan login berdasarkan username dan password yang sudah di-set
  3. Jalankan code berikut pada VNC
nano /etc/ssh/sshd_config
  1. Scroll kebawah kemudian pada bagian PasswordAuthentication ubah value menjadi ‘yes’. Kemudian simpan perubahan dengan menuliskan :wq
  2. Restart ssh dari ECS dengan menjalankan code berikut
sudo service ssh restart

2.3. Mempersiapkan Environment dan Dependencies

  1. Install library virtualenv untuk membentuk environment berdasarkan python. Pada percobaan ini virtual environment dinamai dengan “llm_demo”
pip install virtualenv
virtualenv <nama_virtual_environment>
  1. Aktifkan virtual environment yang sudah dibuat
source <nama_environment>/bin/activate

Pada contoh ini digunakan nama_environment sebagai llm_demo. Jika sistem berhasil terhubung dengan virtual environment akan muncul nama dari virtual environment di terminal seperti pada dibawah ini:

step_by_step_llm

2.4. Melakukan set up library psycopg

  1. Install library psycopg2 dependecies
sudo apt-get install libpq-dev python3-dev

Untuk Operating System (OS) selain Ubuntu dapat memeriksa dokumentasi berikut

  1. Install psycopg2-binary
pip install psycopg2-binary

3) Mempersiapkan Retrieval Plugin OpenAI

Masuk ke dalam ECS Virtual Machine kembali di Visual Studio Code atau console kemudian akses terminal.

3.1. Set up General Environment Variable

Plugins dari Retrieval Plugin OpenAI memerlukan beberapa environment variable berikut untuk dapat menyambungkan ke AnalyticDB for Postgres dan Embedding OpenAI.

Nama Variable Required Description
DATASTORE Yes Tipe Vektor database yang digunakan. Contoh: “analyticdb”
BEARER_TOKEN Yes Secret Token yang digunakan untuk authentikasi API Key. Contoh: “abcd123”
LLM_API_KEY Yes LLM API key yang di dapat dari OpenAI
OPENAI_API_KEY Yes LLM API key. Variable ini digunakan pada saat menjalankan Simple WebUI pada Tahap 4
PG_HOST Yes AnalyticDB Postgres Public IP
PG_PORT No Port AnalyticDB. Default: 5432
PG_DATABASE Yes Database ADBPG yang akan dihubungkan
PG_USER Yes Nama account pada ADBPG
PG_PASSWORD Yes Password account pada ADBPG
PG_COLLECTION No Nama table yang akan dibuat / disambungkan

Melakukan setup environment variable pada .bashrc file dengan menjalankan command berikut

nano ~/.bashrc

Kemudian masukkan variable berikut di bagian bawah dari file bashrc. Penulisan variable adalah export =.

Perhatikan bahwa tidak ada spasi diantara ‘=’

export DATASTORE=analyticdb
export BEARER_TOKEN=<bearer_token>
export LLM_API_KEY=<llm_api_key>
export OPENAI_API_KEY=<llm_api_key>
export PG_HOST=<ADBPG_Public_IP>
export PG_PORT=5432
export PG_DATABASE=<ADBPG_Nama_Database>
export PG_USER=<nama_akun>
export PG_PASSWORD=<password_akun>
export PG_COLLECTION=<nama_table_ADBPG>

Keluar dari halaman nano dengan menjalankan :wq lalu jalankan command berikut

source ~/.bashrc

3.2. Buka Terminal baru dan masuk ke dalam environment python yang sudah dibuat sebelumnya

source llm_demo/bin/activate

3.3. Install Retrieval Plugin: chatgpt-retrieval-plugin

git clone https://github.com/openai/chatgpt-retrieval-plugin.git
cd chatgpt-retrieval-plugin

3.4. Install poetry

Poetry digunakan karena mampu menawarkan lockfile untuk memastikan keberhasilan penginstalan berulang dan dapat membangun proyek dengan lebih mudah.

pip install poetry

3.5. Membuat environment baru dengan python 3.10 dan aktifkan environment tersebut.

Jika environment berhasil ter-install maka akan muncul environment di depan terminal seperti pada Gambar di bawah.

poetry env use python3.10
poetry shell

step_by_step_llm

3.6. Install poetry dependencies

poetry install
pip install psycopg2cffi
poetry run start

Akses ke http://0.0.0.0:8000/docs untuk memeriksa apakah API retrieval plugins berhasil diakses. Laman ini merupakan dokumentasi dari API retrieval plugins.

4) Menyambungkan Custom Dataset pada ADBPG

Jalankan terminal baru untuk tahap berikutnya dan biarkan terminal tahap tiga tetap berjalan. Masuk ke dalam environment yang sudah dibuat sebelumnya.

4.1. Mempersiapkan Custom Dataset
Dataset dapat dibentuk pada lokal PC terlebih dahulu. Format dataset yang dapat digunakan termasuk .docx, .pdf, .csv, .md, .pptx dan .xlsx. Context di dalam documents dapat berupa table maupun teks. Berikut adalah contoh dataset untuk .docx
step_by_step_llm

Untuk contoh ini akan digunakan file csv pada link ini. Masukkan dataset ke dalam sebuah folder dan kompres folder tersebut menjadi zip file. Kemudian masukkan ke dalam folder berikut pada Visual Studio Code:
step_by_step_llm

4.2. Mengupload Dataset pada ADBPG

Code berikut akan menjalankan Open-Source Embedding pada document dan memisahkan menjadi beberapa CHUNKS. Chunk yang dibentuk yang akan disimpan di dalam database AnalyticDB.

python3 scripts/process_zip/process_zip.py --filepath scripts/process_zip/<upload_file_name.zip>

Dapat terjadi beberapa error ketika menjalankan code ini, berikut merupakan solusi dari beberapa error.

Checking if data is already stored in ADBPG:

sudo apt-get install postgresql-client
psql -h <ADBPG_IP> -p <ADBPG_PORT> -U <ADBPG_ACCOUNT> -d <DATABASE>

Jika sudah tidak menghadapi error dapat mengakses dataset ADBPG dengan masuk ke dalam instance ADBPG dan klik Log On to Database.

Error:

• Connection Timed Out Error
step_by_step_llm

  1. Check host endpoint
  2. Check port
  3. Pastikan EIP ECS sudah dimasukkan ke dalam whitelist di AnalyticDB for Postgres

• Vector type not found in the database
step_by_step_llm

  1. Pastikan Vector sudah diaktifkan (lihat 1.a untuk mengaktifkan Vector di AnalyticDB for Postgres)
  2. Restart instance

• ConnectionError: Pastikan terminal pada tahap 3 masih berjalan
• RateLimitError: You exceeded your current quota, check your plan and billing details.

• Object has no attribute ‘conn’:

  1. Membuka file chatgpt-retrieval-plugin > datastore > providers > analyticdb_datastore.py
  2. Pada baris 276 ubah self.conn.commit menjadi conn.commit

• OUTPUT_DIM Error:

  1. Membuka file chatgpt-retrieval-plugin > datastore > providers > analyticdb_datastore.py
  2. Pada baris 102 ubah dim=OUTPUT_DIM menjadi dim=1536

5) Aplikasi Web Sederhana untuk Menangkap Prompt dan Menampilkan Jawaban

5.1. Clone GitHub Project
git clone https://github.com/k-farruh/webui-llm.git
cd webui-llm

5.2. Membuka app.py

  1. Pada baris 12, ubah url menjadi url yang sama dengan chatgpt-retrieval-plugin pada tahapan tiga. Pada contoh ini adalah http://0.0.0.0:8000/query
  2. Pada baris 21, ubah BEARER_TOKEN menjadi bearer_token yang sudah di set sebelumnya. Pada contoh ini “abcd123”

5.3. Jalankan app.py
python3 app.py

Error:

• Exception 401
Check apakah OPENAI API dan LLM API variable sudah benar

echo $OPENAI_API_KEY
echo $LLM_API_KEY

•Exception 500
Check apakah BEARER_TOKEN sudah konsisten dengan pada app.py

echo $BEARER_TOKEN

Check detail dari AnalyticDB for Postgres

echo $PG_HOST
echo $PG_DATABASE
echo $PG_ACCOUNT
echo $PG_PASSWORD

Berikut merupakan contoh tampilan dari LLM + ADBPG yang berhasil dijalankan untuk memberikan respon pada pertanyaan user.

step_by_step_llm

0 1 0
Share on

Alibaba Cloud Indonesia

100 posts | 17 followers

You may also like

Comments