Pelatihan tidak diragukan lagi merupakan bagian terpenting dalam mengembangkan aplikasi pembelajaran mesin. Saat itulah Anda mulai menyadari apakah model Anda layak atau tidak, seperti apa seharusnya tampilan hyperparameter Anda, dan apa yang perlu Anda ubah dalam arsitektur Anda. Secara umum, sebagian besar teknisi pembelajaran mesin menghabiskan banyak waktu untuk pelatihan, bereksperimen dengan berbagai model, menyempurnakan arsitektur, dan menemukan metrik dan kerugian terbaik untuk masalah mereka.
Pada artikel ini, kami melanjutkan seri Pembelajaran Mendalam dalam Produksi oleh membangun pelatih model untuk contoh segmentasi kita kami gunakan sejauh ini. Saya pikir akan lebih baik kali ini daripada menguraikan topik dasar dan prinsip-prinsip rekayasa perangkat lunak, untuk menjalani seluruh siklus pengembangan langkah demi langkah. Jadi, kami akan memprogram seluruh kelas Pelatih seperti yang kami lakukan dalam pekerjaan sehari-hari. Ini juga merupakan peluang bagus untuk menerapkan semua praktik terbaik yang telah kita bicarakan dalam seri ini. Kami akan mengeksplorasi bagaimana kami dapat membangun perangkat lunak berkinerja tinggi dan mudah dipelihara secara real-time.
Jadi bersiaplah untuk banyak kode kali ini. Tanpa basa-basi lagi, mari kita mulai.
Membangun loop pelatihan di Tensorflow
Hal pertama yang pertama. Mari kita ingat kode kita sejauh ini. Yang kami miliki di notebook colab saat ini hanyalah kode Keras boilerplate, yang mencakup kompilasi dan kecocokan model.
self.model.compile(optimizer=self.config.train.optimizer.type,
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=self.config.train.metrics)
LOG.info('Training started')
model_history = self.model.fit(self.train_dataset, epochs=self.epoches,
steps_per_epoch=self.steps_per_epoch,
validation_steps=self.validation_steps,
validation_data=self.test_dataset)
return model_history.history('loss'), model_history.history('val_loss')
Beberapa hal yang perlu diperhatikan di sini sebelum kita melanjutkan. Karena kita mendapatkan sebagian besar hyperparameter dari file konfigurasi, menurut saya akan berguna untuk mengetahui secara pasti apa yang kita gunakan di sini. Secara khusus, kami memilih “SparseCategoricalCrossentropy” sebagai kerugian kami, pengoptimal Adam dan “SparseCategoricalAccuracy” untuk metrik utama kami.
Perhatikan juga bahwa saya menggunakan Python 3.7 dan Tensorflow 2.0. Untuk melihat pengaturan lengkap saya dan menindaklanjutinya, Anda dapat mengunjungi kembali artikel pertama dari seri tempat kami menyiapkan laptop dan menguraikan ikhtisar tingkat tinggi tentang masalah dan tujuan akhir kami.
Untuk menyederhanakannya, saya rasa kita dapat mengganti kode di atas pada fungsi train di dalam kelas model kita dengan kode di bawah ini:
optimizer = tf.keras.optimizers.Adam()
loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
metrics = tf.keras.metrics.SparseCategoricalAccuracy()
trainer = Trainer(self.model, self.train_dataset, loss, optimizer, metrics, self.epoches)
trainer.train()
Yang saya lakukan di sini hanyalah mendefinisikan pengoptimal, kerugian, metrik, dan meneruskannya bersama model dan kumpulan data ke dalam kelas pelatih yang disebut “Pelatih”. Setelah kita membuat instance kelas baru, kita dapat memanggil metode kereta yang memicu awal pelatihan kita.
Praktik yang baik adalah mencoba dan menjaga agar kelas tidak mengetahui semua komponen aplikasi lainnya seperti model dan data. Setiap kelas harus memiliki tujuan tunggal dan hanya melakukan satu hal tanpa bergantung pada elemen lainnya.
Inilah yang kami sebut pemisahan kekhawatiran dan ini merupakan konsep penting untuk memastikan pemeliharaan dan skalabilitas perangkat lunak kami.
Jadi, mari kita definisikan kelas kita dalam file terpisah. Saya biasanya memiliki folder bernama eksekutor dan menyertakan semua fungsi dasar ML seperti pelatihan, validasi, dan prediksi, tetapi Anda jelas bebas melakukan apa pun yang Anda suka. Setiap pelatih hanya bergantung pada enam hal: model, data masukan, fungsi kerugian, pengoptimal, metrik, dan jumlah zaman.
class Trainer:
def __init__(self, model, input, loss_fn, optimizer, metric, epoches):
self.model = model
self.input = input
self.loss_fn = loss_fn
self.optimizer = optimizer
self.metric = metric
self.epoches = epoches
Tidak ada yang mewah di sini, seperti yang Anda lihat. Di dalam kelas Trainer, kita juga membutuhkan a fungsi kereta api, yang akan memiliki fungsi pelatihan secara keseluruhan, dan a fungsi kereta_langkah yang hanya berisi satu langkah pelatihan.
Seringkali, lebih disukai untuk memiliki loop pelatihan khusus daripada mengandalkan API tingkat tinggi seperti Keras, karena kami dapat menyesuaikan setiap detail kecil dan memiliki kontrol penuh atas prosesnya.
Dalam fungsi train_step, kami melakukan pelatihan sebenarnya dari satu batch. Pertama, kita perlu mendapatkan variabel pelatihan alias bobot model dan mengekstrak input dan label dari batch.
trainable_variables = self.model.trainable_variables
inputs, labels = batch
Kemudian kita perlu memasukkan masukan ke dalam model dan menghitung kerugian berdasarkan label dan prediksi Unet.
with tf.GradientTape() as tape:
predictions = self.model(inputs)
step_loss = self.loss_fn(labels, predictions)
Kami menggunakan “ tf.GradientTape()” dari Tensorflow untuk menangkap gradien selama langkah ini, Kami kemudian dapat menerapkannya ke dalam pengoptimal dan mengubah bobotnya sesuai dengan itu.
grads = tape.gradient(step_loss, trainable_variables)
self.optimizer.apply_gradients(zip(grads, trainable_variables))
Intinya, kami menjalankan algoritma backpropagation dengan memanfaatkan API yang disediakan oleh Tensorflow. Untuk pemahaman tingkat rendah tentang cara kerja propagasi mundur, Anda dapat membaca artikel kami tentang membangun jaringan Neural dari awal.
Terakhir, kita perlu memperbarui metrik dan mengembalikan langkah yang hilang serta prediksi untuk digunakan oleh fungsi kereta
self.metric.update_state(labels, predictions)
return step_loss, predictions
Dan akhirnya kita mendapatkan sesuatu seperti ini:
def train_step(self, batch):
trainable_variables = self.model.trainable_variables
inputs, labels = batch
with tf.GradientTape() as tape:
predictions = self.model(inputs)
step_loss = self.loss_fn(labels, predictions)
grads = tape.gradient(step_loss, trainable_variables)
self.optimizer.apply_gradients(zip(grads, trainable_variables))
self.metric.update_state(labels, predictions)
return step_loss, predictions
Sekarang mari kita beralih ke metode kereta. Metode train hanya akan berupa for-loop yang melakukan iterasi pada jumlah epoch dan for loop sekunder di dalamnya, yang melatih setiap batch (ini adalah langkah pelatihan kita).
def train(self):
for epoch in range(self.epoches):
LOG.info(f'Start epoch Hello')
for step, training_batch in enumerate(self.input):
step_loss, predictions = self.train_step(training_batch)
LOG.info("Loss at step %d: %.2f" % (step, step_loss))
train_acc = self.metric.result()
LOG.info(f'Saved checkpoint: para')
Seperti yang saya sebutkan sebelumnya, kita hanya memiliki dua loop for dan banyak logging. Menyediakan log sangat penting agar kita dapat memiliki gambaran yang jelas tentang apa yang terjadi di dalam grafik komputasi. Dengan cara ini, kami dapat menghentikan/melanjutkan pelatihan berdasarkan informasi yang kami terima dari mereka dan segera mengenali kesalahan dan bug. Variabel LOG adalah konstanta yang ditentukan di bagian atas file yang menginisialisasi utilitas logging.
LOG = get_logger('trainer')
Untuk informasi lebih lanjut mengenai hal ini dan cara menggunakan log dalam aplikasi pembelajaran mendalam, lihat artikel seri kami sebelumnya yang didedikasikan untuk debugging dan logging.
Beberapa pengamatan sebelum kita melanjutkan: Pertama-tama, masukannya adalah kumpulan data tensorflow (tf.data) dan seperti yang Anda lihat, kita dapat mengulanginya seperti yang akan kita lakukan untuk array atau daftar normal. Kami juga telah membahasnya di artikel sebelumnya tentang prapemrosesan data. Kedua, saya yakin Anda memperhatikan bahwa kami mencatat kerugian dan keakuratan di seluruh program. Ini bukan hanya untuk menyediakan log tetapi juga untuk mengaktifkan visualisasi pelatihan kami menggunakan Tensorboard. Lebih lanjut tentang itu sebentar lagi.
Ketiga, kita memerlukan cara untuk menyimpan status pelatihan kita secara berkala karena model pembelajaran mendalam dapat melatih dalam waktu yang lama. Dan maksud saya banyak waktu. Untuk menghindari penurunan bobot dan agar dapat menggunakan kembali model terlatih setelahnya, kita perlu memasukkan semacam pos pemeriksaan. Untungnya, sudah ada fungsi bawaan untuk itu.
Pos pemeriksaan pelatihan
Menyimpan status saat ini di pos pemeriksaan sebenarnya cukup mudah. Yang harus kita lakukan adalah menentukan manajer pos pemeriksaan dan pos pemeriksaan awal untuk melanjutkan pelatihan dari sana. Jika ini adalah pertama kalinya kita melatih model, ini akan kosong jika tidak maka model akan dimuat dari folder eksternal. Jadi di kita inisiasi fungsi, kami memiliki:
self.checkpoint = tf.train.Checkpoint(optimizer=optimizer, model=model)
self.checkpoint_manager = tf.train.CheckpointManager(self.checkpoint, './tf_ckpts')
Pos pemeriksaan ditentukan oleh pengoptimal dan model, sedangkan pengelola pos pemeriksaan ditentukan oleh pos pemeriksaan awal dan folder untuk menyimpannya. Dan untuk menyelamatkan keadaan saat ini yang harus kita lakukan adalah:
save_path = self.checkpoint_manager.save()
LOG.info(f'Saved checkpoint: pencinta')
Kami biasanya menempatkan ini di akhir setiap zaman atau setelah sebagian darinya selesai.
Menyimpan model yang dilatih
Setelah seluruh pelatihan selesai, kami ingin menyimpan model terlatih sehingga kami dapat menggunakannya untuk melayani pengguna sebenarnya. Sekali lagi, ini cukup mudah di Tensorflow dan dapat dilakukan dalam beberapa baris:
self.model_save_path = 'saved_models/'
save_path = os.path.join(self.model_save_path, "unet/1/")
tf.saved_model.save(self.model, save_path)
Dan tentu saja, memuat model yang disimpan juga tidak terlalu sulit:
model = tf.saved_model.load(save_path)
Memvisualisasikan pelatihan dengan Tensorboard
Jika Anda adalah orang visual seperti saya, log bukanlah hal yang paling mudah untuk dilihat ketika mencoba memahami bagaimana pelatihan Anda berjalan. Akan jauh lebih baik jika memiliki cara untuk memvisualisasikan proses dan melihat grafik daripada garis-garis log. Jika Anda belum mengetahui alat tersebut, Tensorboard adalah cara untuk memplot metrik yang diambil selama pelatihan dan membuat grafik yang indah untuk metrik tersebut. Ini juga merupakan cara yang sangat baik untuk melihat grafik komputasi dan mendapatkan gambaran tingkat tinggi dari keseluruhan arsitektur kita. Dan itu juga sangat mudah untuk digunakan (yang mengejutkan ya?)
tf.ringkasan adalah metode yang sangat elegan untuk menulis metrik kita ke dalam log yang nantinya dapat digunakan oleh Tensorboard. Kita dapat membuat penulis ringkasan menggunakan jalur eksternal seperti ini:
self.train_log_dir = 'logs/gradient_tape/'
self.train_summary_writer = tf.summary.create_file_writer(self.train_log_dir)
Dan di akhir setiap epoch, kita dapat menggunakan penulis ini untuk menyimpan metrik saat ini seperti contoh di bawah:
def _write_summary(self, loss, epoch):
with self.train_summary_writer.as_default():
tf.summary.scalar('loss', loss, step=epoch)
tf.summary.scalar('accuracy', self.metric.result(), step=epoch)
Beberapa hal yang perlu diperhatikan di sini:
-
tf.summary.scalar membuat file dan menulis metrik di baliknya
-
Log sebenarnya disimpan dalam format biner sehingga kami tidak dapat membacanya
-
Kita dapat meneruskan metrik sebagai argumen pada fungsi tersebut (seperti yang kita lakukan untuk kerugian) atau kita dapat menggunakan tf.metric yang menyimpan keadaan di dalam grafik komputasi
Untuk yang terakhir, kita dapat memperbarui metrik di dalam grafik menggunakan
self.metric.update_state(labels, predictions)
Dan kemudian dapatkan status saat ini dengan:
self.metric.result()
Di mana:
self.metric = tf.keras.metrics.SparseCategoricalAccuracy()
Setelah ringkasannya ditulis, kita dapat menjalankan Tensorboard di localhost dengan menjalankan perintah berikut:
$ tensorboard --logdir logs/gradient_tape
Dan lihatlah:
Tensorboard akan terus mencetak metrik saat pelatihan berjalan. Saya sangat menyarankan untuk meluangkan waktu dan bermain dengannya, sehingga Anda dapat memahami dengan jelas semua hal menakjubkan yang dapat kami lakukan. Ini akan sangat bermanfaat untuk proyek Anda di masa depan, percayalah.
Sebelum kita mengakhiri artikel ini, saya ingin menyebutkan satu hal yang belum kita bahas. Dan itu validasi. Seringkali, setelah kami melakukan semacam pelatihan, kami menerapkan prosedur validasi sehingga kami dapat yakin bahwa hasil kami benar dan modelnya tidak dipasang secara berlebihan. Prinsip yang persis sama dengan prinsip yang kita bicarakan sejauh ini diterapkan di sini. Kami masih memiliki fungsi test dan test_step dan kami masih akan menggunakan tf.metrics, logs, dan Tensorboard. Faktanya, hal ini tidak jauh berbeda dengan pelatihan pada 90% kasus. Satu-satunya perbedaan adalah kita tidak perlu menghitung gradien.
Kesimpulan
Kami melihat cara membuat pelatih khusus dari awal, beserta beberapa praktik terbaik agar tetap dapat dipelihara dan diperluas. Secara paralel, kami mempelajari beberapa trik Tensorflow untuk membuat kode menjadi lebih kecil dan sederhana. Izinkan saya memberi tahu Anda di sini, bahwa inilah proses pemikiran yang akan saya ikuti dalam proyek kehidupan nyata dan kode yang akan dijalankan dalam produksi akan hampir sama dengan yang ini. Saya harap artikel jenis ini bermanfaat bagi Anda dan beri tahu kami jika Anda ingin melihat lebih banyak lagi. Tentu saja, selalu ada cara dan teknik untuk mengoptimalkan lebih jauh, tetapi saya rasa Anda sudah memahami intinya sekarang. Untuk kode lengkapnya, silakan periksa repositori Github kami
Dua artikel berikutnya juga akan fokus pada pelatihan dan cara mengoptimalkannya. Kita akan melihat bagaimana mendistribusikan pelatihan kita pada GPU dan beberapa mesin. Kemudian, kami akan menyajikan contoh lengkap tentang cara menjalankan tugas pelatihan di cloud.
Saya baru menyadari bahwa ini adalah artikel ketujuh dari seri ini dan saya rasa artikel ini tidak akan berakhir dalam waktu dekat. Masih banyak hal yang perlu kami diskusikan sebelum akhirnya model kami diterapkan dan digunakan oleh jutaan pengguna. Aku harap kamu masih bersamaku saat itu.
Sampai saat itu tiba, bersenang-senanglah dan nikmati pembelajaran AI.
* Pengungkapan: Harap diperhatikan bahwa beberapa tautan di atas mungkin merupakan tautan afiliasi, dan tanpa biaya tambahan bagi Anda, kami akan mendapat komisi jika Anda memutuskan untuk melakukan pembelian setelah mengeklik.
ADVERTISEMENT:
slot!, pernahkah denger semboyan “slot demo” Kalau tidak bersiaplah? cinta sama, konsep jatuh slot gacor merupakan slots ini. sering memberi mesin kemenangan yang Ya slot-slot disebut. sebagai, andalannya ini bisa buat bawa come back cuan. but cemana caranya nemuin, raja lot sih tepat Tenang Bro and Sis yang bahas? tenang aja, kita di sini Gaming tergaco saat
ini satu-satunya di yaitu pasti menyediakan Indonesia return on Investment tertinggi Daftarkanlah dengan terbesar
SEGERA dengan di :
Informasi mengenai KING SLOT, Segera Daftar Bersama king selot terbaik dan terpercaya no satu di Indonesia. Boleh mendaftar melalui sini king slot serta memberikan hasil kembali yang paling tinggi saat sekarang ini hanyalah KING SLOT atau Raja slot paling gacor, gilak dan gaco saat sekarang di Indonesia melalui program return tinggi di kingselot serta pg king slot
slot demo gacor
slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama kdwapp.com
akun demo slot gacor
akun demo slot gacor permainan paling top dan garansi imbal balik hasil besar bersama kdwapp.com
akun slot demo gacor
akun slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama kdwapp.com
akun demo slot pragmatic
akun demo slot pragmatic permainan paling top dan garansi imbal balik hasil besar bersama kdwapp.com
akun slot demo pragmatic
akun slot demo pragmatic permainan paling top dan garansi imbal balik hasil besar bersama kdwapp.com
akun slot demo
akun slot demo permainan paling top dan garansi imbal balik hasil besar bersama kdwapp.com
akun demo slot
akun demo slot permainan paling top dan garansi imbal balik hasil besar bersama kdwapp.com
slot demo gacor
slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama jebswagstore.com
akun demo slot gacor
akun demo slot gacor permainan paling top dan garansi imbal balik hasil besar bersama jebswagstore.com
akun slot demo gacor
akun slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama jebswagstore.com
akun demo slot pragmatic
akun demo slot pragmatic permainan paling top dan garansi imbal balik hasil besar bersama jebswagstore.com
akun slot demo pragmatic
akun slot demo pragmatic permainan paling top dan garansi imbal balik hasil besar bersama jebswagstore.com
akun slot demo
akun slot demo permainan paling top dan garansi imbal balik hasil besar bersama jebswagstore.com
akun demo slot
akun demo slot permainan paling top dan garansi imbal balik hasil besar bersama jebswagstore.com
slot demo gacor
slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama demoslotgacor.pro
akun demo slot gacor
akun demo slot gacor permainan paling top dan garansi imbal balik hasil besar bersama demoslotgacor.pro
akun slot demo gacor
akun slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama demoslotgacor.pro
akun demo slot pragmatic
akun demo slot pragmatic permainan paling top dan garansi imbal balik hasil besar bersama demoslotgacor.pro
akun slot demo pragmatic
akun slot demo pragmatic permainan paling top dan garansi imbal balik hasil besar bersama demoslotgacor.pro
akun slot demo
akun slot demo permainan paling top dan garansi imbal balik hasil besar bersama demoslotgacor.pro
akun demo slot
akun demo slot permainan paling top dan garansi imbal balik hasil besar bersama demoslotgacor.pro
slot demo gacor
slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama situsslotterbaru.net
akun demo slot gacor
akun demo slot gacor permainan paling top dan garansi imbal balik hasil besar bersama situsslotterbaru.net
akun slot demo gacor
akun slot demo gacor permainan paling top dan garansi imbal balik hasil besar bersama situsslotterbaru.net
akun demo slot pragmatic
akun demo slot pragmatic permainan paling top dan garansi imbal balik hasil besar bersama situsslotterbaru.net
akun slot demo pragmatic
akun slot demo pragmatic permainan paling top dan garansi imbal balik hasil besar bersama situsslotterbaru.net
akun slot demo
akun slot demo permainan paling top dan garansi imbal balik hasil besar bersama situsslotterbaru.net
akun demo slot
akun demo slot permainan paling top dan garansi imbal balik hasil besar bersama situsslotterbaru.net
situs slot terbaru
situs slot terbaru permainan paling top dan garansi imbal balik hasil besar bersama situsslotterbaru.net
slot terbaru
slot terbaru permainan paling top dan garansi imbal balik hasil besar bersama situsslotterbaru.net
lembagatoto88 permainan paling top dan garansi imbal balik hasil besar bersama lembagatoto88.com
lumbung888 permainan paling top dan garansi imbal balik hasil besar bersama lumbung888.biz
anadototo88 permainan paling top dan garansi imbal balik hasil besar bersama anadototo88.org
mataramtoto88 permainan paling top dan garansi imbal balik hasil besar bersama mataramtoto88.com
mawartoto88 permainan paling top dan garansi imbal balik hasil besar bersama mawartoto88.biz
maxim88 permainan paling top dan garansi imbal balik hasil besar bersama maxim88.org
mpovegas88 permainan paling top dan garansi imbal balik hasil besar bersama mpovegas88.com
nagacc88 permainan paling top dan garansi imbal balik hasil besar bersama nagacc88.com
neng88 permainan paling top dan garansi imbal balik hasil besar bersama neng88.biz
nibung888 permainan paling top dan garansi imbal balik hasil besar bersama nibung888.biz
paristogel88 permainan paling top dan garansi imbal balik hasil besar bersama paristogel88.info
ribut88 permainan paling top dan garansi imbal balik hasil besar bersama ribut88.net
sebat777 permainan paling top dan garansi imbal balik hasil besar bersama sebat777.info
sebat88 permainan paling top dan garansi imbal balik hasil besar bersama sebat88.info
singa88 permainan paling top dan garansi imbal balik hasil besar bersama singa88.biz
texas888 permainan paling top dan garansi imbal balik hasil besar bersama texas888.asia
vertu777 permainan paling top dan garansi imbal balik hasil besar bersama vertu777.org
wks88 permainan paling top dan garansi imbal balik hasil besar bersama wks88.org
wortel88 permainan paling top dan garansi imbal balik hasil besar bersama wortel88.net
yabos888 permainan paling top dan garansi imbal balik hasil besar bersama yabos888.net
yoktogel88 permainan paling top dan garansi imbal balik hasil besar bersama yoktogel88.asia
agam88 permainan paling top dan garansi imbal balik hasil besar bersama agam88.asia
bangkittoto permainan paling top dan garansi imbal balik hasil besar bersama bangkittoto.net
bangor88 permainan paling top dan garansi imbal balik hasil besar bersama bangor88.com
bangor88 permainan paling top dan garansi imbal balik hasil besar bersama bangor88.info
bangor88 permainan paling top dan garansi imbal balik hasil besar bersama bangor88.net
bangor88 permainan paling top dan garansi imbal balik hasil besar bersama bangor88.org
belanjatoto permainan paling top dan garansi imbal balik hasil besar bersama belanjatoto.org
bisnis88 permainan paling top dan garansi imbal balik hasil besar bersama bisnis88.biz
blibli88 permainan paling top dan garansi imbal balik hasil besar bersama blibli88.com
blibli88 permainan paling top dan garansi imbal balik hasil besar bersama blibli88.info
blibli88 permainan paling top dan garansi imbal balik hasil besar bersama blibli88.net
blibli88 permainan paling top dan garansi imbal balik hasil besar bersama blibli88.org
btstoto88 permainan paling top dan garansi imbal balik hasil besar bersama btstoto88.com
btstoto88 permainan paling top dan garansi imbal balik hasil besar bersama btstoto88.info
btstoto88 permainan paling top dan garansi imbal balik hasil besar bersama btstoto88.net
btstoto88 permainan paling top dan garansi imbal balik hasil besar bersama btstoto88.org
cendanatoto88 permainan paling top dan garansi imbal balik hasil besar bersama cendanatoto88.com
cupang88 permainan paling top dan garansi imbal balik hasil besar bersama cupang88.biz
cupangjp88 permainan paling top dan garansi imbal balik hasil besar bersama cupangjp88.com
danatoto88 permainan paling top dan garansi imbal balik hasil besar bersama danatoto88.biz
danatoto88slot permainan paling top dan garansi imbal balik hasil besar bersama danatoto88slot.net
davo888 permainan paling top dan garansi imbal balik hasil besar bersama davo888.biz
dewasurga888 permainan paling top dan garansi imbal balik hasil besar bersama dewasurga888.biz
dhx88 permainan paling top dan garansi imbal balik hasil besar bersama dhx88.biz
dingdongtogel88 permainan paling top dan garansi imbal balik hasil besar bersama dingdongtogel88.biz
egp888 permainan paling top dan garansi imbal balik hasil besar bersama egp888.biz
eropa88 permainan paling top dan garansi imbal balik hasil besar bersama eropa88.biz
forwin777 permainan paling top dan garansi imbal balik hasil besar bersama forwin777.biz
forwin88 permainan paling top dan garansi imbal balik hasil besar bersama forwin88.net
gacor222 permainan paling top dan garansi imbal balik hasil besar bersama gacor222.biz
galaxy777 permainan paling top dan garansi imbal balik hasil besar bersama galaxy777.asia
garuda88 permainan paling top dan garansi imbal balik hasil besar bersama garuda88.biz
gaul88 permainan paling top dan garansi imbal balik hasil besar bersama gaul88.biz
glowin888 permainan paling top dan garansi imbal balik hasil besar bersama glowin888.biz
gopay88 permainan paling top dan garansi imbal balik hasil besar bersama gopay88.biz
harum88 permainan paling top dan garansi imbal balik hasil besar bersama harum88.biz
harumtoto permainan paling top dan garansi imbal balik hasil besar bersama harumtoto.net
hiu88 permainan paling top dan garansi imbal balik hasil besar bersama hiu88.biz
hiutoto permainan paling top dan garansi imbal balik hasil besar bersama hiutoto.biz
hoki117 permainan paling top dan garansi imbal balik hasil besar bersama hoki117.net
ibetslot88 permainan paling top dan garansi imbal balik hasil besar bersama ibetslot88.biz
idhoki888 permainan paling top dan garansi imbal balik hasil besar bersama idhoki888.com
indosport999 permainan paling top dan garansi imbal balik hasil besar bersama indosport999.net
jackpot10 permainan paling top dan garansi imbal balik hasil besar bersama jackpot10.net
jago77 permainan paling top dan garansi imbal balik hasil besar bersama jago77.biz
jet88 permainan paling top dan garansi imbal balik hasil besar bersama jet88.biz
jinbei88 permainan paling top dan garansi imbal balik hasil besar bersama jinbei88.biz
juliet88 permainan paling top dan garansi imbal balik hasil besar bersama juliet88.org
kakekslot88 permainan paling top dan garansi imbal balik hasil besar bersama kakekslot88.asia
kenzo118 permainan paling top dan garansi imbal balik hasil besar bersama kenzo118.biz
kiw88 permainan paling top dan garansi imbal balik hasil besar bersama kiw88.biz
lazada88 permainan paling top dan garansi imbal balik hasil besar bersama lazada88.biz
mangga2bet88 permainan paling top dan garansi imbal balik hasil besar bersama mangga2bet88.com
mental88 permainan paling top dan garansi imbal balik hasil besar bersama mental88.org
nenektogel88 permainan paling top dan garansi imbal balik hasil besar bersama nenektogel88.com
obc88 permainan paling top dan garansi imbal balik hasil besar bersama obc88.net
parsel88 permainan paling top dan garansi imbal balik hasil besar bersama parsel88.com
pasar88 permainan paling top dan garansi imbal balik hasil besar bersama pasar88.biz
pilar100 permainan paling top dan garansi imbal balik hasil besar bersama pilar100.net
power88 permainan paling top dan garansi imbal balik hasil besar bersama power88.biz
pragmatic7777 permainan paling top dan garansi imbal balik hasil besar bersama pragmatic7777.com
pragmaticid88 permainan paling top dan garansi imbal balik hasil besar bersama pragmaticid88.com
pragmaticid88 permainan paling top dan garansi imbal balik hasil besar bersama pragmaticid88.info
pragmaticid88 permainan paling top dan garansi imbal balik hasil besar bersama pragmaticid88.net
pragmaticid88 permainan paling top dan garansi imbal balik hasil besar bersama pragmaticid88.org
premantoto88 permainan paling top dan garansi imbal balik hasil besar bersama premantoto88.com
pucuk88 permainan paling top dan garansi imbal balik hasil besar bersama pucuk88.biz
pucuktoto permainan paling top dan garansi imbal balik hasil besar bersama pucuktoto.biz
pusat88 permainan paling top dan garansi imbal balik hasil besar bersama pusat88.biz
raja228 permainan paling top dan garansi imbal balik hasil besar bersama raja228.biz
rajabandot88 permainan paling top dan garansi imbal balik hasil besar bersama rajabandot88.biz
rajapanen88 permainan paling top dan garansi imbal balik hasil besar bersama rajapanen88.net
rogtoto88 permainan paling top dan garansi imbal balik hasil besar bersama rogtoto88.net
sdtoto88 permainan paling top dan garansi imbal balik hasil besar bersama sdtoto88.biz
semangat88 permainan paling top dan garansi imbal balik hasil besar bersama semangat88.biz
sensasi555 permainan paling top dan garansi imbal balik hasil besar bersama sensasi555.net
sensasi88 permainan paling top dan garansi imbal balik hasil besar bersama sensasi88.biz
simenang88slot permainan paling top dan garansi imbal balik hasil besar bersama simenang88slot.com
slotter999 permainan paling top dan garansi imbal balik hasil besar bersama slotter999.net
slottoto88 permainan paling top dan garansi imbal balik hasil besar bersama slottoto88.org