RDS SQLFlow adalah solusi AI berbasis AliSQL yang menyediakan layanan terkelola penuh untuk menyederhanakan implementasi pembelajaran mesin. Dengan ekstensi SQL dan kemampuan pembelajaran mesin bawaan, RDS SQLFlow menghubungkan AliSQL ke mesin AI, memungkinkan Anda menggambarkan alur data dan konstruksi AI di balik aplikasi menggunakan kode SQL minimal.
Langkah 1: Siapkan layanan rds_sqlflow
-
Buat instans RDS Custom dengan pengaturan parameter berikut. Untuk instruksi lengkap, lihat Buat instans RDS Custom.
-
Pada bagian Instance Type, atur Architecture ke AI Node.
-
Untuk Image, pilih SQLFlow di bawah Default Image.
-
-
Gunakan instans ECS di Wilayah dan VPC yang sama dengan instans RDS Custom Anda untuk menghubungkannya melalui perintah
ssh. Untuk instruksi lengkap, lihat Hubungkan ke instans RDS Custom. -
Arahkan ke direktori /home/script dan jalankan skrip
start_sqlflow.sh. Skrip ini membuat proses MySQL lokal dan menjalankan kontainer RDS SQLFlow.cd /home/script ./start_sqlflow.sh -P 50054 -u aliyun_rds -p aliyun_rdsParameter:
Parameter
Deskripsi
-PPort host yang dipetakan ke port dalam kontainer RDS SQLFlow. Nilai default-nya adalah 50054.
-uUsername untuk proses MySQL. Nilai default-nya adalah aliyun_rds.
-pPassword untuk user MySQL. Jika Anda tidak menentukan parameter ini, password acak akan dibuat.
Output:
-
Sertifikat Transport Layer Security (TLS). Salin konten sertifikat tersebut dan simpan sebagai file
ca.crtpada client Anda. -
Perintah koneksi client. Anda dapat menggunakan perintah ini untuk menghubungkan ke node RDS SQLFlow dan menentukan sumber data untuk pembelajaran mesin.
Simpan konten berikut sebagai ca.crt pada client: -----BEGIN CERTIFICATE----- xxx -----END CERTIFICATE----- Hubungkan ke SQLFlow dengan perintah berikut: sqlflow -c ca.crt -d'mysql://aliyun_rds:aliyun_rds@tcp(172.xxx.xxx.xxx:3306)/mysql?maxAllowedPacket=0' -s172.xxx.xxx.xxx:xxx:50054 Anda juga dapat mengubah konfigurasi mysql untuk menghubungkan ke mysql Anda sendiri.Hasil: Jalankan perintah berikut untuk memeriksa status eksekusi skrip.
-
Jalankan perintah
ps -ef | grep mysqluntuk memeriksa status proses MySQL.[root@rc-xxx script]# ps -ef | grep mysql mysql 22669 1 0 09:52 ? 00:00:02 /home/u01/mysql80_current/bin/mysqld --defaults-file=/etc/my.cnf root 22811 21833 0 09:57 pts/0 00:00:00 grep --color=auto mysql -
Jalankan perintah
docker psuntuk memeriksa status kontainer RDS SQLFlow.[root@rc-xxx script]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS b8af67093420 rds-sqlflow:latest "bash /start.sh" About a minute ago Up About a minute 50051/tcp, 0.0.0.0:50054->50052/tcp, [::]:50054->50052/tcp
-
Langkah 2: Hubungkan ke layanan rds_sqlflow
-
Instal client RDS SQLFlow pada instans ECS di Wilayah dan VPC yang sama dengan instans RDS Custom, lalu berikan izin eksekusi kepada client tersebut.
-
Anda dapat memperoleh client RDS SQLFlow dengan salah satu cara berikut:
-
Dari instans RDS Custom, salin file client RDS SQLFlow dari direktori /home ke instans ECS target. Tutorial ini menggunakan direktori /home sebagai contoh.
scp /home/sqlflow root@<private_IP_address_of_the_ECS_instance>:/home -
Pada instans ECS target, unduh client tersebut.
wget -O sqlflow "https://forsharelogs.oss-cn-beijing.aliyuncs.com/sqlflow?Expires=1729065153&OSSAccessKeyId=TMP.3KhXUKdnV6VCQmT15btm1k2tLRdWeBh26vq78fg2zJDLLfMAmrXYP2hWJKw64Wq7VWmLQLiMuCPCDiTv5ERnhL7a9e****&Signature=mgbW6Vh5q%2FP8aGxrzz0QtglBUxQ%3D"
-
-
Pada instans ECS target, jadikan file
sqlflowdapat dieksekusi.cd /home chmod +x sqlflow -
Pada instans ECS target, buat file
ca.crtdan tempel konten sertifikat TLS yang Anda hasilkan di Langkah 1.vim ca.crt
-
-
Gunakan perintah koneksi client yang dihasilkan saat Anda menjalankan skrip
start_sqlflow.shdi Langkah 1 untuk menghubungkan ke layanan rds_sqlflow. Misalnya, jika clientsqlflowdiinstal di direktori /home, jalankan perintah berikut:/home/sqlflow -c ca.crt -d'mysql://user:password@tcp(mysqlHost:mysqlPort})/mysql?maxAllowedPacket=0' -ssqlflowHost:sqlflowPortParameter:
Parameter
Deskripsi
-cFile sertifikat yang dihasilkan di Langkah 1.
-dMenentukan sumber data MySQL untuk RDS SQLFlow. Contoh:
'mysql://user:password@tcp(mysqlHost:mysqlPort)/mysql?maxAllowedPacket=0'.-
user: Username untuk sumber data MySQL. -
password: Password untuk user sumber data MySQL. -
mysqlHost: Titik akhir sumber data MySQL. -
mysqlPort: Nomor port sumber data MySQL.
CatatanSecara default, perintah koneksi client yang dihasilkan di Langkah 1 menggunakan layanan MySQL yang berjalan di server RDS SQLFlow. Anda juga dapat menentukan titik akhir layanan MySQL lain sebagai sumber data.
-sMenentukan titik akhir server RDS SQLFlow. Contoh:
sqlflowHost:sqlflowPort.-
sqlflowHost: Titik akhir server RDS SQLFlow, yaitu Alamat IP pribadi instans RDS Custom. -
sqlflowPort: Nomor port server RDS SQLFlow.
Contoh:
/home/sqlflow -c ca.crt -d'mysql://aliyun_rds:aliyun@tcp(47.XXX.XXX.153:3306})/mysql?maxAllowedPacket=0' -s172.XXX.XXX.180:50054Pesan
Welcome to SQLFlowmenunjukkan bahwa Anda telah berhasil terhubung dan memasuki CLI SQLFlow. -
Langkah 3: Persiapkan data
RDS SQLFlow memerlukan sumber data MySQL untuk pembelajaran mesin.
Sumber data MySQL dapat berupa database MySQL yang berjalan di server RDS SQLFlow atau database MySQL lain, seperti instans ApsaraDB RDS for MySQL.
Tutorial ini menggunakan database MySQL pada server RDS SQLFlow untuk membangun set data Iris dan melatih algoritma TensorFlow DNNClassifier. DNNClassifier cocok untuk mengklasifikasikan set data besar yang menggunakan data satu dimensi sebagai input dan memiliki pola internal kompleks yang sulit diinterpretasikan.
Set data Iris dalam tutorial ini berisi empat fitur dan satu label. Keempat fitur tersebut menggambarkan morfologi botani masing-masing bunga iris dan direpresentasikan sebagai bilangan titik mengambang. Label merepresentasikan kategori subspesies masing-masing bunga iris sebagai bilangan bulat, yaitu 0, 1, atau 2. Di TensorFlow, kolom fitur berfungsi sebagai jembatan antara kolom dalam data Anda dan fitur yang digunakan untuk melatih model. TensorFlow menyediakan berbagai jenis kolom fitur. Untuk informasi lebih lanjut, lihat dokumentasi resmi TensorFlow. Tabel berikut menjelaskan kolom-kolom dalam set data Iris.
|
Nama |
Type |
Deskripsi |
|
sepal_length |
float |
Fitur. Panjang sepal. Satuan: cm. |
|
sepal_width |
float |
Fitur. Lebar sepal. Satuan: cm. |
|
petal_length |
float |
Fitur. Panjang petal. Satuan: cm. |
|
petal_width |
float |
Fitur. Lebar petal. Satuan: cm. |
|
class |
int |
Label. Kategori subspesies. Nilai valid: 0, 1, dan 2. |
Di CLI SQLFlow, jalankan pernyataan SQL berikut untuk membuat set data pelatihan dan set data evaluasi untuk pembelajaran mesin.
Langkah 4: Latih model
Di CLI SQLFlow, jalankan pernyataan SQL berikut untuk melatih model DNNClassifier tiga kelas. Model ini memiliki dua lapisan tersembunyi dengan masing-masing 100 node. Tingkat pembelajaran untuk pengoptimal adalah 0,1, dan pelatihan berjalan selama 10 epoch.
CREATE DATABASE IF NOT EXISTS sqlflow_models;
SELECT * FROM iris.train -- Tentukan iris.train sebagai set data pelatihan.
TO TRAIN DNNClassifier WITH
model.n_classes = 3, -- Atur jumlah kelas menjadi 3.
model.hidden_units = [100, 100], -- Tentukan dua lapisan tersembunyi, masing-masing dengan 100 unit.
optimizer.learning_rate=0.1, -- Atur tingkat pembelajaran menjadi 0.1.
train.epoch = 10 -- Atur jumlah epoch pelatihan menjadi 10.
COLUMN sepal_length, sepal_width, petal_length, petal_width -- Tentukan kolom fitur.
LABEL class -- Tentukan kolom label sebagai class.
INTO sqlflow_models.my_dnn_model; -- Simpan model yang telah dilatih ke tabel yang ditentukan.
Langkah 5: Evaluasi model
-
Gunakan set data
iris.testuntuk mengevaluasi modelsqlflow_models.my_dnn_model. Hasil evaluasi disimpan ke tabelsqlflow_models.evaluate_result_table.SELECT * FROM iris.test TO EVALUATE sqlflow_models.my_dnn_model WITH validation.metrics = Accuracy LABEL class INTO sqlflow_models.evaluate_result_table; SELECT * FROM sqlflow_models.evaluate_result_table; -
Setelah evaluasi selesai, jalankan pernyataan SQL berikut untuk melihat hasilnya. Anda dapat menyesuaikan parameter model berdasarkan hasil ini.
SELECT * FROM sqlflow_models.evaluate_result_table;Hasil:
+----------------------+----------+ | LOSS | ACCURACY | +----------------------+----------+ | 0.035312581807374954 | 1 | +----------------------+----------+
Langkah 6: Lakukan prediksi
-
Gunakan model
sqlflow_models.my_dnn_modeluntuk melakukan prediksi. Hasilnya ditulis ke kolomclasspada tabeliris.predict. Pernyataan prediksi adalah sebagai berikut:SELECT * FROM iris.test TO PREDICT iris.predict.class USING sqlflow_models.my_dnn_model; -
Setelah prediksi selesai, jalankan pernyataan SQL berikut untuk melihat hasilnya.
SELECT * FROM iris.predict LIMIT 5;Hasil:
+--------------+-------------+--------------+-------------+-------+ | SEPAL LENGTH | SEPAL WIDTH | PETAL LENGTH | PETAL WIDTH | CLASS | +--------------+-------------+--------------+-------------+-------+ | 6.3 | 2.7 | 4.9 | 1.8 | 2 | | 5.7 | 2.8 | 4.1 | 1.3 | 1 | | 5 | 3 | 1.6 | 0.2 | 0 | | 6.3 | 3.3 | 6 | 2.5 | 2 | | 5 | 3.5 | 1.6 | 0.6 | 0 | +--------------+-------------+--------------+-------------+-------+