By Aaron Handoko, Solution Architect
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.
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.
a. Aktifkan Vector Engine Optimization
b. Membuat Akun di AnalyticDB
Masuk ke dalam instance AnalyticDB yang sudah dibuat dengan mengeklik instance tersebut.
c. Membuat Database di AnalyticDB
d. Membentuk Public Endpoint
e. Memasukkan Whitelist ECS Instance
Langkah berikutnya adalah memasukkan eip dari ECS Instance ke dalam whitelist ADBPG agar ECS dapat mendapatkan akses ke database.
2.1. Menghubungkan dengan SSH melalui Virtual Studio Code (Optional)
2.2. Menghubungkan dengan SSH melalui Console (Optional)
Jika mendapatkan error yang menunjukkan pesan “Password login not enabled” atau yang dapat terlihat dibawah ini, maka ECS belum memperbolehkan login menggunakan password.
nano /etc/ssh/sshd_config
sudo service ssh restart
2.3. Mempersiapkan Environment dan Dependencies
pip install virtualenv
virtualenv <nama_virtual_environment>
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:
2.4. Melakukan set up library psycopg
sudo apt-get install libpq-dev python3-dev
Untuk Operating System (OS) selain Ubuntu dapat memeriksa dokumentasi berikut
pip install psycopg2-binary
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
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.
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
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:
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.
• Connection Timed Out Error
• Vector type not found in the database
• 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’:
• OUTPUT_DIM Error:
5.1. Clone GitHub Project
git clone https://github.com/k-farruh/webui-llm.git
cd webui-llm
5.2. Membuka app.py
5.3. Jalankan app.py
python3 app.py
• 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.
100 posts | 17 followers
FollowAlibaba Cloud Indonesia - July 5, 2023
Regional Content Hub - August 19, 2024
Alibaba Cloud Indonesia - May 4, 2021
Regional Content Hub - May 6, 2024
Dikky Ryan Pratama - October 14, 2024
Alibaba Cloud Indonesia - May 5, 2021
100 posts | 17 followers
FollowAn online MPP warehousing service based on the Greenplum Database open source program
Learn MoreAnalyticDB for MySQL is a real-time data warehousing service that can process petabytes of data with high concurrency and low latency.
Learn MoreAlibaba Cloud PolarDB for PostgreSQL is an in-house relational database service 100% compatible with PostgreSQL and highly compatible with the Oracle syntax.
Learn MoreAn on-demand database hosting service for PostgreSQL with automated monitoring, backup and disaster recovery capabilities
Learn MoreMore Posts by Alibaba Cloud Indonesia