Rumah > Peranti teknologi > AI > Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

WBOY
Lepaskan: 2023-05-01 16:43:19
ke hadapan
1071 orang telah melayarinya

Pengarang: Ya Jie Yingliang, Chen Long dan lain-lain

Pengenalan

Memandangkan perniagaan penghantaran makanan Meituan terus berkembang, penghantaran makanan Pasukan enjin pengiklanan telah menjalankan penerokaan dan amalan kejuruteraan dalam pelbagai bidang dan telah mencapai beberapa keputusan. Kami akan berkongsinya secara bersiri, dan kandungan terutamanya termasuk: ① Amalan platformisasi perniagaan ② Amalan kejuruteraan model pembelajaran mendalam berskala besar ③ Penerokaan dan amalan pengkomputeran talian dekat; -pembinaan indeks skala dan perkhidmatan mendapatkan semula dalam talian ⑤ Amalan platform kejuruteraan mekanisme. Tidak lama dahulu, kami telah menerbitkan amalan platformisasi perniagaan (Untuk butiran, sila rujuk "Penerokaan dan Amalan Platformisasi Pengiklanan Takeout MeituanSatu artikel). Artikel ini adalah yang kedua dalam satu siri artikel Kami akan menumpukan pada cabaran yang dibawa oleh model mendalam berskala besar pada peringkat pautan penuh, bermula dari dua aspek: kependaman dalam talian dan kecekapan luar talian, dan menghuraikan kejuruteraan pengiklanan secara besar. -model dalam skala, saya harap ia boleh membawa sedikit bantuan atau inspirasi kepada semua orang.

1 Latar Belakang

Menjalankan perlombongan data dan minat dalam senario perniagaan Internet teras seperti carian, pengesyoran dan pengiklanan (selepas ini dirujuk sebagai promosi carian) Pemodelan dan menyediakan perkhidmatan berkualiti tinggi kepada pengguna telah menjadi elemen utama dalam meningkatkan pengalaman pengguna. Dalam tahun-tahun kebelakangan ini, untuk perniagaan carian dan promosi, model pembelajaran mendalam telah dilaksanakan secara meluas dalam industri dengan bantuan dividen data dan dividen teknologi perkakasan Pada masa yang sama, dalam senario CTR, industri telah beralih secara beransur-ansur daripada DNN kecil model kepada model Embedding yang besar dengan bertrilion parameter atau model super besar. Barisan perniagaan pengiklanan bawa pulang terutamanya telah melalui proses evolusi "model cetek LR (model pokok)" -> "model pembelajaran mendalam" -> "model pembelajaran mendalam berskala besar". Keseluruhan aliran evolusi secara beransur-ansur beralih daripada model ringkas berdasarkan ciri buatan kepada model pembelajaran mendalam yang kompleks dengan data sebagai teras. Penggunaan model besar telah meningkatkan keupayaan ekspresif model, lebih tepat memadankan bahagian penawaran dan permintaan, dan memberikan lebih banyak kemungkinan untuk pembangunan perniagaan seterusnya. Tetapi apabila skala model dan data terus meningkat, kami mendapati kecekapan mempunyai hubungan berikut dengan mereka: Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulangSeperti yang ditunjukkan dalam rajah di atas, apabila skala data dan model meningkat, yang sepadan "Tempoh" akan menjadi lebih lama dan lebih lama. "Tempoh" ini sepadan dengan tahap luar talian, yang ditunjukkan dalam kecekapan sepadan dengan tahap dalam talian, yang ditunjukkan dalam Kependaman. Dan kerja kami dijalankan mengikut pengoptimuman "tempoh" ini.

2 Analisis

Berbanding dengan model kecil biasa, masalah teras model besar ialah: kerana jumlah data dan skala model meningkat berpuluh-puluh kali Walaupun seratus kali, storan, komunikasi, pengkomputeran, dll. pada pautan keseluruhan akan menghadapi cabaran baharu, yang akan menjejaskan kecekapan lelaran luar talian algoritma. Bagaimana untuk menerobos beberapa siri masalah seperti kekangan kelewatan dalam talian? Mari analisa keseluruhan pautan dahulu, seperti yang ditunjukkan di bawah:

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

"Tempoh" menjadi lebih lama, yang ditunjukkan terutamanya dalam aspek berikut:

  • Kelewatan dalam talian: Pada peringkat ciri, apabila permintaan dalam talian kekal tidak berubah, peningkatan dalam bilangan ciri akan menyebabkan masa pengiraan IO dan ciri Masalah seperti peningkatan amat ketara dan memerlukan pembentukan semula dalam aspek seperti analisis dan penyusunan pengendali ciri, penjadualan tugas dalaman pengekstrakan ciri dan penghantaran I/O rangkaian. Pada peringkat model, model telah melalui perubahan daripada ratusan M/G kepada ratusan G, yang telah membawa peningkatan dua pesanan magnitud dalam storan. Di samping itu, jumlah pengiraan model tunggal juga telah meningkat dengan susunan magnitud (FLOP daripada berjuta-juta kepada kini berpuluh juta Hanya bergantung pada CPU tidak dapat menyelesaikan masalah besar Disebabkan oleh permintaan untuk kuasa pengkomputeran, adalah penting untuk membina seni bina penaakulan CPU+GPU+Hierarchical Cache untuk menyokong penaakulan pembelajaran mendalam berskala besar.
  • Kecekapan luar talian: Memandangkan bilangan sampel dan ciri meningkat beberapa kali, masa untuk pembinaan sampel dan latihan model akan dipanjangkan dengan banyak Ia mungkin menjadi tidak boleh diterima. Bagaimana untuk menyelesaikan pembinaan sampel besar-besaran dan latihan model dengan sumber yang terhad adalah masalah utama sistem. Pada peringkat data, industri secara amnya menyelesaikan masalah daripada dua peringkat Di satu pihak, ia secara berterusan mengoptimumkan kekangan dalam proses pemprosesan kelompok Sebaliknya, ia "menukar kumpulan menjadi aliran" data, daripada berpusat kepada diedarkan , yang sangat meningkatkan kecekapan data. Pada peringkat latihan, pecutan dicapai melalui GPU perkakasan yang digabungkan dengan pengoptimuman peringkat seni bina. Kedua, inovasi algoritma sering didorong oleh orang Bagaimana data baharu boleh dipadankan dengan cepat dengan model. Bagaimanakah model baharu boleh digunakan dengan cepat oleh perniagaan lain Jika N orang diletakkan pada N barisan perniagaan untuk melakukan pengoptimuman yang sama, ia akan berkembang? menjadi a Dengan mengoptimumkan satu barisan perniagaan dan penyiaran kepada N barisan perniagaan pada masa yang sama, tenaga kerja N-1 akan dikeluarkan untuk melakukan inovasi baharu, yang akan memendekkan kitaran inovasi, terutamanya apabila keseluruhan skala model berubah Pada masa hadapan, ia pasti akan meningkatkan kos lelaran manual, mencapai transformasi yang mendalam daripada "orang mencari ciri/model" kepada "ciri/model mencari orang", mengurangkan "inovasi berulang", dan mencapai pemadanan pintar model dan data.
  • Isu lain dengan Pipeline: Machine learning Pipeline bukan unik kepada pautan model pembelajaran mendalam berskala besar, tetapi dengan pelancaran model besar, ia akan Terdapat cabaran baharu, seperti: ① Bagaimana proses sistem menyokong penggunaan dalam talian penuh dan tambahan ② Masa rollback model, masa untuk melakukan perkara dengan betul, dan masa pemulihan selepas melakukan perkara yang salah; Ringkasnya, permintaan baharu akan timbul dalam pembangunan, ujian, penggunaan, pemantauan, rollback, dsb.

Artikel ini memfokuskan pada kependaman dalam talian (inferens model, perkhidmatan ciri ), kecekapan luar talian ( Ia akan dijalankan dari dua aspek: pembinaan sampel dan penyediaan data ), dan secara beransur-ansur menerangkan amalan kejuruteraan pengiklanan pada model mendalam berskala besar. Bagaimana untuk mengoptimumkan "tempoh" dan isu lain yang berkaitan, kami akan kongsikan dalam bab-bab seterusnya, jadi nantikan.

3 Inferens Model

Pada peringkat inferens model, pengiklanan bawa pulang telah melalui tiga versi, dari era 1.0, diwakili oleh model DNN yang menyokong skala khusus, hingga 2.0 Pada era, kecekapan tinggi dan kod rendah menyokong lelaran berbilang perkhidmatan, dan dalam era 3.0 hari ini, ia secara beransur-ansur menghadapi keperluan pembelajaran mendalam kuasa pengkomputeran DNN dan storan berskala besar. Aliran evolusi utama ditunjukkan dalam rajah di bawah: Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

Untuk senario inferens model besar, dua masalah teras yang diselesaikan oleh seni bina 3.0 ialah: "masalah penyimpanan" dan "prestasi masalah". Sudah tentu, cara mengulang untuk N ratusan model G+, cara memastikan kestabilan dalam talian apabila beban pengiraan meningkat berpuluh-puluh kali ganda, cara mengukuhkan Talian Paip, dsb. juga merupakan cabaran yang dihadapi oleh projek. Di bawah ini kita akan menumpukan pada cara seni bina Model Inference 3.0 menyelesaikan masalah penyimpanan model yang besar melalui "pengedaran" dan cara menyelesaikan masalah prestasi dan pemprosesan melalui pecutan CPU/GPU.

3.1 Diedarkan

Parameter model besar terbahagi terutamanya kepada dua bahagian: Parameter jarang dan Parameter Padat.

  • Parameter jarang: Magnitud parameter adalah sangat besar, biasanya dalam paras bilion, atau bahkan paras bilion/puluhan bilion, yang akan membawa kepada penggunaan ruang penyimpanan yang besar, biasanya dalam tahap 100G atau bahkan tahap T. Ciri-cirinya: ① ​​Kesukaran dalam pemuatan bersendirian: Dalam mod bersendirian, semua parameter Jarang perlu dimuatkan ke dalam memori mesin, mengakibatkan kekurangan memori yang serius, menjejaskan kestabilan dan kecekapan lelaran ② Bacaan Jarang: hanya sebahagian daripada Jarang; parameter perlu dibaca untuk setiap pengiraan inferens, contohnya, jumlah penuh parameter Pengguna adalah pada tahap 200 juta, tetapi hanya satu parameter Pengguna perlu dibaca untuk setiap permintaan inferens.
  • Parameter padat: Skala parameter tidak besar, model disambungkan sepenuhnya secara amnya pada 2~3 lapisan, dan magnitud parameter adalah pada juta/sepuluh peringkat juta. Ciri-ciri: ① Mesin tunggal boleh dimuatkan: Parameter padat menduduki kira-kira berpuluh-puluh megabait, dan memori mesin tunggal boleh dimuatkan secara normal Contohnya: lapisan input ialah 2000, lapisan bersambung sepenuhnya ialah [1024, 512, 256], dan. jumlah parameter ialah: 2000 * 1024 + 1024 * 512 + 512 * 256 + 256 = 2703616, sejumlah 2.7 juta parameter, dan memori yang diduduki adalah dalam 100 megabait ② Bacaan penuh: untuk setiap amaun inferens; parameter perlu dibaca.

Oleh itu, kunci untuk menyelesaikan masalah pertumbuhan skala parameter model besar ialah mengubah parameter Jarang daripada storan mesin tunggal kepada storan teragih Kaedah transformasi merangkumi dua bahagian: ① Penukaran struktur rangkaian model ;② Eksport parameter Jarang.

3.1.1 Penukaran struktur rangkaian model

Kaedah industri untuk mendapatkan parameter teragih secara kasar dibahagikan kepada dua jenis: perkhidmatan luaran mendapatkan parameter terlebih dahulu dan menyerahkannya kepada perkhidmatan anggaran ; Perkhidmatan anggaran secara dalaman memperoleh parameter daripada storan teragih dengan mengubah pengendali TF (TensorFlow). Untuk mengurangkan kos pengubahsuaian seni bina dan mengurangkan pencerobohan ke dalam struktur model sedia ada, kami memilih untuk mendapatkan parameter teragih dengan mengubah suai pengendali TF.

Dalam keadaan biasa, model TF akan menggunakan operator asli untuk membaca parameter Jarang Pengendali teras ialah operator GatherV2 Input pengendali terutamanya mempunyai dua bahagian: ① ID Pertanyaan Diperlukan senarai; ② Membenamkan jadual yang menyimpan parameter Jarang. Fungsi pengendali

ialah membaca data Benam yang sepadan dengan indeks senarai ID daripada jadual Benam dan mengembalikannya pada asasnya proses pertanyaan Hash. Antaranya, parameter Sparse yang disimpan dalam jadual Embedding semuanya disimpan dalam memori mesin tunggal dalam model mesin tunggal.

Mengubah pengendali TF pada asasnya ialah transformasi struktur rangkaian model Inti utama transformasi merangkumi dua bahagian: ① Pembinaan semula graf rangkaian ② Operator teragih tersuai.

1. Pembinaan semula rajah rangkaian: Ubah struktur rangkaian model, gantikan pengendali TF asli dengan pengendali teragih tersuai dan lakukan jadual Benam asli pada masa yang sama masa menjadi kukuh.

  • Penggantian operator teragih: Melintasi rangkaian model dan gantikan operator GatherV2 yang perlu diganti dengan yang diedarkan tersuai Pengendali MtGatherV2 secara serentak mengubah suai Input/Output nod huluan dan hiliran.
  • Pemejalan jadual Benam Asli: Jadual Benam asli dikukuhkan sebagai ruang letak, yang bukan sahaja dapat mengekalkan integriti struktur rangkaian model, tetapi juga mengelakkan pendudukan memori mesin tunggal dengan parameter Jarang .

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang2 Pengendali teragih tersuai: Ubah pertanyaan berdasarkan senarai ID The Embedding. proses diubah suai daripada menanyakan jadual Embedding tempatan kepada menanyakan KV yang diedarkan.

  • Minta pertanyaan: Nyahduplikasi ID input untuk mengurangkan volum pertanyaan dan pertanyaan cache peringkat kedua secara serentak melalui sharding ( Cache Tempatan + KV Jauh) Dapatkan vektor Benamkan.
  • Pengurusan model : Kekalkan model Embedding Meta proses pendaftaran dan penyahpasangan, serta fungsi penciptaan dan pemusnahan Cache.
  • Penyerahan model: mencetuskan pemuatan maklumat sumber model dan proses pengimportan selari Membenamkan data ke dalam KV.

3.1.2 Eksport parameter jarang

  • Eksport selari beling: menghurai model fail Checkpoint , dapatkan maklumat Bahagian yang sepadan dengan jadual Benam, bahagikannya mengikut Bahagian dan eksport setiap fail Bahagian ke HDFS secara selari melalui berbilang nod Pekerja.
  • Import KV: Pra-peruntukkan berbilang Baldi terlebih dahulu akan menyimpan maklumat seperti versi model untuk memudahkan pertanyaan penghalaan dalam talian. Pada masa yang sama, data Embedding model juga akan disimpan dalam Baldi dan diimport ke KV secara selari dengan sharding.

Proses keseluruhan ditunjukkan dalam rajah di bawah Kami memastikan keselamatan ratusan gigabait melalui penukaran struktur model teragih luar talian, jaminan ketekalan data barisan dan tempat liputan dalam talian. caching data. Keperluan lelaran biasa model.

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

Dapat dilihat bahawa storan yang digunakan oleh storan teragih adalah keupayaan KV luaran, yang akan digantikan dengan yang lebih cekap, fleksibel dan mudah- untuk mengurus Perkhidmatan Pembenaman pada masa hadapan.

3.2 pecutan CPU

Selain kaedah pengoptimuman model itu sendiri, terdapat dua kaedah pecutan CPU biasa utama: ① Pengoptimuman set arahan, seperti menggunakan AVX2 , Set Arahan AVX512 ② Gunakan pustaka pecutan (TVM, OpenVINO).

  1. Pengoptimuman set arahan : Jika anda menggunakan model TensorFlow, apabila menyusun kod rangka kerja TensorFlow, terus tambah arahan pada pilihan penyusunan Hanya tetapkan item pengoptimuman. Amalan telah membuktikan bahawa pengenalan pengoptimuman set arahan AVX2 dan AVX512 mempunyai kesan yang jelas, dan daya pemprosesan perkhidmatan inferens dalam talian telah meningkat sebanyak 30%+.
  2. Pengoptimuman perpustakaan pecutan : Pustaka pecutan mengoptimumkan dan menyepadukan struktur model rangkaian untuk mencapai kesan pecutan inferens. Perpustakaan pecutan yang biasa digunakan dalam industri termasuk TVM, OpenVINO, dsb. Antaranya, TVM menyokong platform merentas dan mempunyai serba boleh yang baik. OpenVINO dioptimumkan khusus untuk perkakasan pengilang Intel Ia mempunyai fleksibiliti umum tetapi kesan pecutan yang baik.

Di bawah, kami akan menumpukan pada beberapa pengalaman praktikal kami dalam menggunakan OpenVINO untuk pecutan CPU. OpenVINO ialah satu set rangka kerja pengoptimuman pecutan pengkomputeran berasaskan pembelajaran mendalam yang dilancarkan oleh Intel, yang menyokong pengoptimuman mampatan, pengkomputeran dipercepatkan dan fungsi lain model pembelajaran mesin. Prinsip pecutan OpenVINO ringkasnya diringkaskan kepada dua bahagian: gabungan operator linear dan penentukuran ketepatan data.

  1. Gaburan operator linear: OpenVINO menggunakan pengoptimum model untuk menyatukan operator berbilang lapisan dalam rangkaian model secara linear Fusion kepada mengurangkan overhed penjadualan operator dan overhed akses data antara operator, seperti menggabungkan tiga operator Conv+BN+Relu ke dalam operator struktur CBR.
  2. Penentukuran ketepatan data: Selepas model dilatih di luar talian, kerana tidak ada keperluan untuk perambatan belakang semasa proses inferens, ketepatan data boleh dikurangkan dengan sewajarnya, seperti tentang ketepatan FP16 atau INT8, menghasilkan jejak memori yang lebih kecil dan kependaman inferens yang lebih rendah.

Pecutan CPU biasanya mempercepatkan inferens untuk baris gilir calon kelompok tetap, tetapi dalam senario promosi carian, baris gilir calon selalunya dinamik. Ini bermakna sebelum inferens model, operasi pemadanan Kelompok perlu ditambah, iaitu baris gilir calon Batch dinamik yang diminta dipetakan kepada model Kelompok yang paling hampir dengannya, tetapi ini memerlukan membina N model padanan, menghasilkan N kali penggunaan memori. . Jumlah model semasa telah mencapai ratusan gigabait, dan ingatan sangat ketat. Oleh itu, memilih struktur rangkaian yang munasabah untuk pecutan adalah isu utama yang perlu dipertimbangkan. Gambar di bawah menunjukkan seni bina pengendalian keseluruhan: Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

  1. Pengagihan rangkaian: Struktur rangkaian keseluruhan model CTR disarikan kepada tiga bahagian: Lapisan benam, Lapisan perhatian dan lapisan MLP, yang mana Lapisan benam digunakan untuk pemerolehan data , lapisan Perhatian mengandungi lebih banyak operasi logik dan pengiraan rangkaian ringan, manakala lapisan MLP ialah pengiraan rangkaian padat.
  2. Pemilihan rangkaian pecutan: OpenVINO mempunyai kesan pecutan yang lebih baik untuk pengiraan rangkaian tulen dan boleh digunakan dengan baik pada lapisan MLP. Di samping itu, kebanyakan data model disimpan dalam lapisan Embedding, dan lapisan MLP hanya menduduki beberapa puluh megabait memori. Jika berbilang kelompok dibahagikan untuk rangkaian lapisan MLP, pendudukan memori model adalah sebelum pengoptimuman (Membenamkan+Perhatian+MLP) ≈ selepas pengoptimuman (Membenamkan+Perhatian+MLP×Nombor Kelompok) , kurang memberi kesan kepada penggunaan ingatan. Oleh itu, kami akhirnya memilih rangkaian lapisan MLP sebagai rangkaian pecutan model.

Pada masa ini, penyelesaian pecutan CPU berdasarkan OpenVINO telah mencapai hasil yang baik dalam persekitaran pengeluaran: apabila CPU adalah sama dengan garis dasar, daya pemprosesan perkhidmatan meningkat sebanyak 40 %, dan kelewatan purata dikurangkan sebanyak 15%. Jika anda ingin melakukan sedikit pecutan pada tahap CPU, OpenVINO ialah pilihan yang baik.

3.3 pecutan GPU

Di satu pihak, dengan perkembangan perniagaan, bentuk perniagaan menjadi semakin banyak, trafik semakin tinggi dan lebih tinggi, dan model semakin luas dan lebih dalam Penggunaan kuasa meningkat secara mendadak, sebaliknya, adegan pengiklanan terutamanya menggunakan model DNN, yang melibatkan sejumlah besar operasi titik apungan rangkaian saraf. Sebagai akses memori dan perkhidmatan dalam talian intensif pengkomputeran, ia mesti memenuhi keperluan kependaman rendah dan daya pemprosesan tinggi sambil memastikan ketersediaan, yang juga merupakan cabaran kepada kuasa pengkomputeran mesin tunggal. Jika konflik antara keperluan sumber pengkomputeran dan ruang ini tidak diselesaikan dengan baik, ia akan sangat mengehadkan pembangunan perniagaan: sebelum model diperluas dan diperdalam, perkhidmatan inferens CPU tulen boleh memberikan daya pemprosesan yang besar, tetapi selepas model dilebarkan dan diperdalam, pengiraan menjadi kompleks. Untuk memastikan ketersediaan yang tinggi, sejumlah besar sumber mesin perlu digunakan, yang menjadikan model besar tidak dapat digunakan dalam talian secara besar-besaran. Pada masa ini, penyelesaian biasa dalam industri adalah menggunakan GPU untuk menyelesaikan masalah ini sendiri lebih sesuai untuk tugasan intensif pengkomputeran. Menggunakan GPU memerlukan penyelesaian cabaran berikut: cara mencapai daya pemprosesan setinggi mungkin sambil memastikan ketersediaan dan kependaman rendah, sambil mempertimbangkan kemudahan penggunaan dan serba boleh. Untuk tujuan ini, kami juga telah melakukan banyak kerja praktikal pada GPU, seperti TensorFlow-GPU, TensorFlow-TensorRT, TensorRT, dll. Untuk mengambil kira fleksibiliti TF dan kesan pecutan TensorRT, kami menggunakan reka bentuk seni bina dua peringkat bebas TensorFlow+TensorRT.

3.3.1 Analisis Pecutan

  • Pengkomputeran Heterogen: Idea kami konsisten dengan pecutan CPU, CTR pembelajaran mendalam 200G Model tidak boleh dimasukkan terus ke dalam GPU. Pengendali intensif memori adalah sesuai (, seperti operasi yang berkaitan dengan Pembenaman dan operator intensif pengiraan (Sebagai contoh, MLP) sesuai untuk GPU.
  • Beberapa perkara yang perlu diberi perhatian apabila menggunakan GPU: ① Interaksi yang kerap antara memori dan memori video ② Latensi dan daya pemprosesan ; ③ Kebolehskalaan Trade Off dengan pengoptimuman prestasi ④ Penggunaan GPU.
  • Pemilihan enjin inferens: Enjin pecutan inferens yang biasa digunakan dalam industri termasuk TensorRT, TVM, XLA, ONNXRuntime, dsb., kerana TensorRT digunakan dalam pengoptimuman operator Ia lebih mendalam daripada enjin lain, dan boleh melaksanakan mana-mana operator melalui pemalam tersuai, yang sangat berskala. Selain itu, TensorRT menyokong model daripada platform pembelajaran biasa (Kafe, PyTorch, TensorFlow, dll.), dan persekitarannya menjadi lebih lengkap (Alat penukaran model onnx-tensorrt, alat analisis prestasi nsys, dsb. ), jadi enjin pecutan di bahagian GPU menggunakan TensorRT.
  • Analisis model: Abstraksi keseluruhan struktur rangkaian model CTR dibahagikan kepada tiga bahagian: Lapisan benam, Lapisan perhatian dan lapisan MLP digunakan untuk pemerolehan data dan sesuai untuk CPU ;Lapisan Perhatian mengandungi lebih banyak operasi logik dan pengiraan rangkaian ringan, manakala lapisan MLP memfokuskan pada pengiraan rangkaian, dan pengiraan ini boleh dilakukan secara selari, sesuai untuk GPU dan boleh menggunakan sepenuhnya GPU Teras (Teras Cuda, Teras Tensor ), meningkatkan tahap selari.

3.3.2 Matlamat Pengoptimuman

Fasa inferens pembelajaran mendalam mempunyai keperluan yang tinggi pada kuasa pengkomputeran dan kependaman Jika rangkaian saraf terlatih secara langsung Apabila digunakan hingga akhir inferens, masalah seperti kuasa pengkomputeran yang tidak mencukupi atau masa inferens yang panjang mungkin berlaku. Oleh itu, kita perlu melakukan pengoptimuman tertentu pada rangkaian saraf terlatih. Idea umum untuk mengoptimumkan model rangkaian saraf dalam industri boleh dioptimumkan dari aspek yang berbeza seperti pemampatan model, penggabungan lapisan rangkaian yang berbeza, sparsifikasi, dan penggunaan jenis data berketepatan rendah, malah memerlukan pengoptimuman yang disasarkan ciri perkakasan. Untuk tujuan ini, kami terutamanya mengoptimumkan sekitar dua matlamat berikut:

  1. Teruskan di bawah kelewatan dan kekangan sumber: Apabila sumber yang dikongsi seperti daftar dan cache tidak perlu bersaing, peningkatan serentak boleh meningkatkan penggunaan sumber secara berkesan (CPU, GPU penggunaan ), tetapi ini boleh menyebabkan peningkatan dalam kependaman permintaan. Memandangkan had kelewatan sistem dalam talian adalah sangat ketat, had atas daya tampung sistem dalam talian tidak boleh hanya ditukar melalui penunjuk penggunaan sumber Ia perlu dinilai secara menyeluruh di bawah kekangan kelewatan dan digabungkan dengan had atas sumber. Apabila kependaman sistem rendah dan penggunaan sumber (Memori/CPU/GPU, dsb.) menjadi kekangan, penggunaan sumber boleh dikurangkan melalui pengoptimuman model penggunaan sumber sistem adalah rendah dan kependaman adalah kekangan, kependaman boleh dikurangkan melalui pengoptimuman gabungan dan pengoptimuman enjin. Dengan menggabungkan pelbagai kaedah pengoptimuman di atas, keupayaan komprehensif perkhidmatan sistem boleh dipertingkatkan dengan berkesan, sekali gus mencapai tujuan meningkatkan daya pemprosesan sistem.
  2. Ketumpatan pengkomputeran di bawah kekangan pengiraan: Di bawah sistem heterogen CPU/GPU, prestasi inferens model dipengaruhi terutamanya oleh kecekapan penyalinan data dan kecekapan pengkomputeran, yang masing-masing dikawal oleh pengendali intensif akses memori. Ditentukan oleh pengendali intensif pengkomputeran, kecekapan penyalinan data dipengaruhi oleh kecekapan penghantaran data PCIe, pembacaan dan penulisan memori CPU/GPU, dsb. Kecekapan pengkomputeran dipengaruhi oleh kecekapan pengkomputeran pelbagai unit pengkomputeran seperti Teras CPU, CUDA Teras, dan Teras Tensor. Dengan perkembangan pesat perkakasan seperti GPU, keupayaan pemprosesan pengendali intensif pengkomputeran telah meningkat dengan pesat, mengakibatkan fenomena bahawa pengendali intensif akses memori menghalang peningkatan keupayaan perkhidmatan sistem Oleh itu, mengurangkan pengendali intensif akses memori dan menambah baik Ketumpatan pengkomputeran juga menjadi semakin penting kepada keupayaan perkhidmatan sistem, iaitu, mengurangkan penyalinan data dan pelancaran kernel apabila jumlah pengiraan model tidak banyak berubah. Contohnya, pengoptimuman model dan pengoptimuman gabungan digunakan untuk mengurangkan penggunaan transformasi operator (seperti Cast/Unsqueeze/Concat dan operator lain), dan CUDA Graph digunakan untuk mengurangkan pelancaran kernel, dsb.

Yang berikut akan menumpukan pada dua matlamat di atas dan memperkenalkan secara terperinci kerja kami tentang pengoptimuman model, pengoptimuman gabungan dan pengoptimuman enjin Sesetengah kerja telah selesai.

3.3.3 Pengoptimuman Model

1. Pengiraan dan penyahduplikasi penghantaran: Semasa inferens, Kumpulan yang sama hanya mengandungi satu maklumat pengguna. . Oleh itu, maklumat pengguna boleh dikurangkan daripada Saiz Kelompok kepada 1 sebelum inferens, dan kemudian dikembangkan apabila inferens benar-benar diperlukan untuk mengurangkan kos penghantaran salinan data dan pengiraan berulang. Seperti yang ditunjukkan dalam rajah di bawah, anda boleh menanyakan maklumat ciri kelas pengguna sekali sahaja sebelum inferens, dan memotongnya dalam subrangkaian berkaitan pengguna sahaja, dan kemudian mengembangkannya apabila anda perlu mengira perkaitan.

  • Proses automatik: cari nod dengan pengiraan berulang (nod merah ), jika semua nod daun nod adalah nod pengiraan berulang, maka nod juga merupakan nod pengiraan berulang, dan semua nod berulang dicari ke atas lapisan demi lapisan dari nod daun sehingga Selepas traversal nod dan cari, cari garis penghubung semua nod merah dan putih, masukkan nod pengembangan ciri Pengguna dan kembangkan ciri Pengguna.

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

2. Pengoptimuman ketepatan data : disebabkan oleh model Semasa latihan, perambatan belakang diperlukan untuk mengemas kini kecerunan, yang memerlukan ketepatan data yang tinggi manakala semasa inferens model, hanya inferens ke hadapan dilakukan tanpa mengemas kini kecerunan Oleh itu, di bawah premis memastikan kesan, FP16 atau ketepatan campuran digunakan untuk pengoptimuman untuk menjimatkan ruang memori, mengurangkan overhed penghantaran dan meningkatkan prestasi inferens dan daya pemprosesan.

3. Tekan ke bawah Pengiraan: Struktur model CTR terutamanya terdiri daripada tiga lapisan: Lapisan Benam, Perhatian dan MLP data. Perhatian sebahagiannya logik dan sebahagiannya pengiraan Untuk mengeksploitasi sepenuhnya potensi GPU, kebanyakan logik pengiraan Perhatian dan MLP dalam struktur model CTR dialihkan daripada CPU ke GPU untuk pengiraan, dan keseluruhan pemprosesan. bertambah baik.

3.3.4 Pengoptimuman Gabungan

Semasa inferens model dalam talian, operasi pengiraan setiap lapisan diselesaikan oleh GPU Malah, CPU melengkapkan pengiraan dengan memulakan kernel CUDA yang berbeza Pengiraan tensor adalah sangat pantas, tetapi banyak masa sering terbuang untuk memulakan kernel CUDA dan membaca serta menulis tensor input/output setiap lapisan, yang menyebabkan kesesakan dalam lebar jalur memori dan pembaziran sumber GPU. Di sini kami terutamanya akan memperkenalkan dua bahagian TensorRT: pengoptimuman automatik dan pengoptimuman manual. 1. Pengoptimuman automatik: TensorRT ialah pengoptimum inferens pembelajaran mendalam berprestasi tinggi yang boleh menyediakan penggunaan inferens berkependaman rendah dan berkemampuan tinggi untuk aplikasi pembelajaran mendalam. TensorRT boleh digunakan untuk mempercepatkan inferens pada model berskala sangat besar, platform terbenam atau platform pemanduan autonomi. TensorRT kini boleh menyokong hampir semua rangka kerja pembelajaran mendalam seperti TensorFlow, Caffe, MXNet dan PyTorch Menggabungkan TensorRT dengan GPU NVIDIA boleh mendayakan penggunaan dan inferens yang pantas dan cekap dalam hampir semua rangka kerja. Dan sesetengah pengoptimuman tidak memerlukan terlalu banyak penyertaan pengguna, seperti beberapa Pelaburan Lapisan, Penalaan Auto Kernel, dsb.

  • Layer Fusion: TensorRT sangat mengurangkan bilangan lapisan rangkaian dengan menggabungkan secara mendatar atau menegak antara lapisan. Ringkasnya, ia adalah dengan menggabungkan beberapa op pengiraan atau alih keluar beberapa ops berlebihan untuk mengurangkan bilangan peredaran data, penggunaan memori video yang kerap dan overhed penjadualan. Sebagai contoh, struktur rangkaian biasa termasuk gabungan Operasi Convolution Dan ElementWise, gabungan CBR, dll. Rajah berikut ialah gambar rajah struktur beberapa subgraf dalam keseluruhan struktur rangkaian sebelum dan selepas gabungan FusedNewOP mungkin melibatkan pelbagai Taktik semasa proses gabungan. seperti CudnnMLPFC, CudnnMLPMM, CudaMLP, dsb. Akhirnya, Taktik optimum akan dipilih sebagai struktur bercantum berdasarkan tempoh. Melalui operasi gabungan, bilangan lapisan rangkaian dikurangkan dan saluran data dipendekkan struktur yang sama digabungkan untuk menjadikan saluran data lebih luas, mencapai tujuan penggunaan sumber GPU yang lebih cekap.

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

  • Penalaan Auto Kernel: Apabila model rangkaian berada dalam inferens, ia memanggil CUDA kernel GPU. TensorRT boleh melaraskan kernel CUDA untuk model rangkaian yang berbeza, struktur kad grafik, bilangan SM, frekuensi teras, dsb., memilih strategi pengoptimuman dan kaedah pengiraan yang berbeza, dan mencari kaedah pengiraan optimum yang sesuai untuk situasi semasa untuk memastikan model semasa memperoleh hasil terbaik pada platform tertentu. Gambar di atas ialah idea utama pengoptimuman Setiap op akan mempunyai pelbagai strategi pengoptimuman kernel (cuDNN, cuBLAS, dll.). kernel optimum dipilih pada masa yang sama Akhirnya Membentuk Rangkaian baharu.

2 Pengoptimuman manual: Seperti yang kita sedia maklum, GPU sesuai untuk pengendali intensif pengiraan. . Jenis operator lain (operator pengiraan ringan, operator operasi logik, dll.) tidak begitu mesra. Apabila menggunakan pengiraan GPU, setiap operasi biasanya melalui beberapa proses: CPU memperuntukkan memori video pada GPU -> CPU menghantar data ke GPU -> CPU memulakan kernel CUDA -> CPU mengambil data -> CPU mengeluarkan memori video GPU. Untuk mengurangkan overhed seperti penjadualan, pelancaran kernel dan akses memori, integrasi rangkaian diperlukan. Oleh kerana struktur model besar CTR yang fleksibel dan boleh diubah, sukar untuk menyatukan kaedah gabungan rangkaian, dan hanya masalah khusus yang boleh dianalisis secara terperinci. Contohnya, dalam arah menegak, Cast, Unsqueeze dan Less dicantumkan, dan TensorRT internal Conv, BN dan Relu dicantumkan dalam arah mendatar, operator input dari dimensi yang sama dicantumkan. Untuk tujuan ini, kami menggunakan alat analisis prestasi berkaitan NVIDIA (NVIDIA Nsight Systems, NVIDIA Nsight Compute, dll.) untuk menganalisis isu khusus berdasarkan senario perniagaan dalam talian sebenar. Integrasikan alat analisis prestasi ini ke dalam persekitaran inferens dalam talian untuk mendapatkan fail Profing GPU semasa proses inferens. Melalui fail Profing, kami dapat melihat dengan jelas proses inferens Kami mendapati bahawa fenomena terikat pelancaran kernel bagi sesetengah operator dalam keseluruhan inferens adalah serius, dan jurang antara beberapa operator adalah besar, dan terdapat ruang untuk pengoptimuman, seperti yang ditunjukkan dalam angka berikut:

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

Untuk tujuan ini, analisa keseluruhan Rangkaian berdasarkan alat analisis prestasi dan model yang ditukar, ketahui bahagian yang TensorRT telah dioptimumkan, dan kemudian lakukan penyepaduan rangkaian pada substruktur lain dalam Rangkaian yang boleh dioptimumkan, sambil memastikan bahawa substruktur ini menduduki bahagian tertentu dalam keseluruhan Rangkaian, memastikan ketumpatan pengkomputeran boleh meningkat ke tahap tertentu selepas gabungan. Bagi jenis kaedah penyepaduan rangkaian yang akan digunakan, ia boleh digunakan secara fleksibel mengikut senario tertentu Rajah berikut ialah perbandingan rajah substruktur sebelum dan selepas penyepaduan kami:

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

3.3 .5 Pengoptimuman enjin

  1. Berbilang model : Disebabkan skala permintaan pengguna yang tidak menentu dalam iklan bawa pulang, iklan kadangkala lebih banyak dan kadangkala kurang, jadi lebih banyak beban dimuatkan untuk ini Setiap model sepadan dengan kumpulan input yang berbeza Skala input dibahagikan kepada baldi, dikelaskan dan dipadatkan kepada berbilang kelompok tetap Pada masa yang sama, ia dipetakan model yang sepadan untuk inferens.
  2. Berbilang konteks dan Berbilang strim: Untuk setiap model Kelompok, menggunakan berbilang konteks dan berbilang strim bukan sahaja dapat mengelakkan overhed model yang menunggu konteks yang sama, Selain itu, ia boleh menggunakan sepenuhnya konkurensi berbilang aliran untuk mencapai pertindihan antara aliran Pada masa yang sama, untuk menyelesaikan masalah persaingan sumber dengan lebih baik, CAS diperkenalkan. Seperti yang ditunjukkan dalam rajah di bawah, satu aliran menjadi berbilang aliran:

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

  1. Bentuk Dinamik : Untuk menangani padding data yang tidak perlu dalam senario di mana kumpulan input tidak pasti, dan pada masa yang sama mengurangkan bilangan model dan mengurangkan pembaziran sumber seperti memori video, Dynamic Shape diperkenalkan . Model melakukan inferens berdasarkan data input sebenar, mengurangkan pembaziran data dan sumber pengkomputeran yang tidak diperlukan, dan akhirnya mencapai tujuan pengoptimuman prestasi dan peningkatan daya pengeluaran.
  2. Graf CUDA: Masa yang dibelanjakan untuk setiap operasi GPU moden (kernel berjalan, dsb.) ialah sekurang-kurangnya tahap mikrosaat dan ia akan Setiap operasi yang diserahkan kepada GPU juga akan dikenakan sedikit overhed (tahap mikrosaat). Dalam inferens sebenar, selalunya diperlukan untuk melaksanakan sejumlah besar operasi kernel Setiap operasi ini diserahkan kepada GPU secara berasingan dan dikira secara berasingan Jika overhed semua permulaan penyerahan boleh diringkaskan, ia sepatutnya membawa peningkatan keseluruhan dalam prestasi. Graf CUDA boleh mencapai ini dengan mentakrifkan keseluruhan proses pengkomputeran sebagai graf dan bukannya senarai operasi individu, dan kemudian mengurangkan overhed permulaan penyerahan kernel dengan menyediakan cara untuk operasi CPU tunggal melancarkan berbilang operasi GPU pada graf . Idea teras Graf CUDA adalah untuk mengurangkan bilangan pelancaran kernel Dengan menangkap graf sebelum dan selepas inferens dan mengemas kini graf mengikut keperluan inferens, inferens berikutnya tidak lagi memerlukan pelancaran kernel satu demi satu, hanya graf yang dilancarkan. diperlukan, akhirnya mengurangkan bilangan pelancaran kernel. Seperti yang ditunjukkan dalam rajah di bawah, satu inferens melakukan 4 operasi berkaitan kernel, dan kesan pengoptimuman boleh dilihat dengan jelas dengan menggunakan Graf CUDA.

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

  1. PS berbilang peringkat: Untuk meneroka lebih lanjut prestasi enjin pecutan GPU, pertanyaan pada Membenamkan data Operasi boleh dilakukan melalui PS berbilang peringkat: memori GPU Cache->Memori CPU Cache->SSD tempatan/KV teragih. Antaranya, data hotspot boleh dicache dalam memori GPU, dan data cache boleh dikemas kini secara dinamik melalui mekanisme seperti migrasi, promosi dan penghapusan hotspot data, menggunakan sepenuhnya kuasa pengkomputeran selari dan keupayaan akses memori GPU untuk pertanyaan yang cekap. . Selepas ujian luar talian, prestasi pertanyaan Cache GPU adalah 10 kali lebih tinggi daripada Cache CPU untuk data kehilangan Cache GPU, ia boleh disoal dengan mengakses Cache dua peringkat boleh memenuhi 90%+ akses data; permintaan long-tail, maka Pemerolehan Data perlu dilakukan dengan mengakses KV yang diedarkan. Struktur khusus adalah seperti berikut:

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

3.3.6 Saluran Paip

Keseluruhan proses model daripada latihan luar talian untuk pemuatan akhir dalam talian adalah menyusahkan, dan model ini tidak boleh digunakan secara universal pada kad GPU yang berbeza, versi TensorRT dan CUDA yang berbeza, yang membawa lebih banyak kemungkinan ralat dalam penukaran model. Oleh itu, untuk meningkatkan kecekapan keseluruhan lelaran model, kami telah membina keupayaan yang berkaitan dalam Pipeline, seperti yang ditunjukkan dalam rajah di bawah:

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

Pembinaan saluran paip termasuk dua bahagian: proses pemisahan dan penukaran model luar talian dan proses penggunaan model dalam talian:

  1. Sebelah luar talian: Hanya sediakan nod pemisah model, dan platform akan memisahkan model TF asal secara automatik kepada submodel Benamkan dan submodel graf pengiraan, di mana submodel Benam melaksanakan pengkomputeran teragih melalui penukar teragih. Sub-penggantian dan kerja import Benam; submodel graf pengiraan melakukan penukaran dan pengoptimuman kompilasi model TensorRT mengikut persekitaran perkakasan yang dipilih (model GPU, versi TensorRT, versi CUDA), dan akhirnya menukar dua sub-model Hasilnya disimpan dalam S3 untuk penggunaan model seterusnya dan dalam talian. Keseluruhan proses diselesaikan secara automatik oleh platform, tanpa pengguna mengetahui butiran pelaksanaan.
  2. Ujian dalam talian: Hanya pilih persekitaran perkakasan penggunaan model (Selaras dengan persekitaran untuk penukaran model), platform akan dikonfigurasikan mengikut persekitaran, Lakukan pemuatan tolak adaptif model, dan lengkapkan penggunaan dan penggunaan dalam talian model dengan satu klik.

Pipeline telah meningkatkan kecekapan lelaran model melalui pembinaan keupayaan konfigurasi dan satu klik, membantu pelajar algoritma dan kejuruteraan untuk lebih memfokuskan pada pekerjaan mereka. Angka berikut menunjukkan faedah keseluruhan yang dicapai dalam amalan GPU berbanding dengan inferens CPU tulen:

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

4 Pengoptimuman CodeGen Perkhidmatan Ciri

Ciri Pengekstrakan ialah peringkat pra pengiraan model Sama ada model LR tradisional atau model pembelajaran mendalam yang semakin popular, input perlu diperoleh melalui pengekstrakan ciri. Dalam blog sebelum ini Pembinaan dan Amalan Meituan Takeout Feature Platform, kami menerangkan bahawa kami berdasarkan ciri model MFDL perihalan kendiri, dan mengira ciri Proses ini dikonfigurasikan untuk memastikan ketekalan sampel semasa anggaran dalam talian dan latihan luar talian. Dengan lelaran perniagaan yang pesat, bilangan ciri model terus meningkat terutamanya model yang besar memperkenalkan sejumlah besar ciri diskret, mengakibatkan penggandaan jumlah pengiraan. Untuk tujuan ini, kami telah membuat beberapa pengoptimuman pada lapisan pengekstrakan ciri dan mencapai keuntungan yang ketara dalam pemprosesan dan penggunaan masa.

4.1 Pengoptimuman CodeGen Proses penuh

DSL ialah penerangan bagi logik pemprosesan ciri. Dalam pelaksanaan pengiraan ciri awal, DSL yang dikonfigurasikan untuk setiap model telah ditafsir dan dilaksanakan. Kelebihan mentafsir pelaksanaan ialah ia mudah untuk dilaksanakan, dan pelaksanaan yang baik boleh dicapai melalui reka bentuk yang baik, seperti corak lelaran yang biasa digunakan ialah prestasi pelaksanaan adalah rendah, dan banyak lompatan dan jenis cawangan tidak boleh dielakkan di peringkat pelaksanaan demi kepelbagaian penukaran dll. Malah, untuk versi tetap konfigurasi model, semua peraturan penukaran ciri modelnya adalah tetap dan tidak akan berubah dengan permintaan. Dalam kes yang melampau, berdasarkan maklumat yang diketahui ini, setiap ciri model boleh dikodkan keras untuk mencapai prestasi muktamad. Jelas sekali, konfigurasi ciri model sentiasa berubah, dan adalah mustahil untuk mengodkan setiap model secara manual. Oleh itu idea CodeGen, yang secara automatik menjana satu set kod proprietari untuk setiap konfigurasi semasa penyusunan. CodeGen bukanlah teknologi atau rangka kerja tertentu, tetapi idea yang melengkapkan proses penukaran daripada bahasa penerangan abstrak kepada bahasa pelaksanaan tertentu. Malah, dalam industri, adalah amalan biasa untuk menggunakan CodeGen untuk mempercepatkan pengiraan dalam senario intensif pengkomputeran. Contohnya, Apache Spark menggunakan CodeGen untuk mengoptimumkan prestasi pelaksanaan SparkSql daripada ExpressionCodeGen dalam 1.x untuk mempercepatkan operasi ekspresi kepada WholeStageCodeGen yang diperkenalkan dalam 2.x untuk pecutan peringkat penuh, peningkatan prestasi yang sangat jelas telah dicapai. Dalam bidang pembelajaran mesin, beberapa rangka kerja pecutan model TF, seperti TensorFlow XLA dan TVM, juga berdasarkan idea CodeGen Tensor nod disusun menjadi IR lapisan tengah bersatu, dan pengoptimuman penjadualan dilakukan berdasarkan IR yang digabungkan dengan. persekitaran tempatan untuk mencapai pecutan pengiraan model runtime.

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

Belajar daripada Spark's WholeStageCodeGen, matlamat kami adalah untuk menyusun keseluruhan pengiraan ciri DSL ke dalam kaedah boleh laku, dengan itu mengurangkan kehilangan prestasi apabila kod dijalankan. Keseluruhan proses kompilasi boleh dibahagikan kepada: bahagian hadapan (FrontEnd), pengoptimum (Optimizer) dan back-end (BackEnd). Bahagian hadapan bertanggungjawab terutamanya untuk menghuraikan DSL sasaran dan menukar kod sumber kepada AST atau IR pengoptimuman mengoptimumkan kod perantaraan yang diperoleh berdasarkan bahagian hadapan untuk menjadikan kod bahagian belakang menukar perantaraan yang dioptimumkan; kod ke dalam kod Asli untuk platform masing-masing. Pelaksanaan khusus adalah seperti berikut:

  1. Halaman hadapan: Setiap model sepadan dengan graf DAG nod, huraikan setiap ciri satu demi satu, kira DSL, menjana AST, dan nod AST ditambah pada graf.
  2. Pengoptimum : Optimumkan nod DAG, seperti pengekstrakan operator awam, lipatan berterusan, dsb.
  3. Backend : Susun graf yang dioptimumkan ke dalam bytecode.

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

Selepas pengoptimuman, terjemahan graf DAG nod, iaitu, pelaksanaan kod hujung belakang, menentukan prestasi akhir. Salah satu kesukaran juga ialah sebab mengapa enjin ekspresi sumber terbuka sedia ada tidak boleh digunakan secara langsung: pengiraan ciri DSL bukanlah ungkapan pengiraan semata-mata. Ia boleh menerangkan proses pemerolehan dan pemprosesan ciri melalui gabungan pengendali baca dan pengendali penukaran:

  1. Pengendali baca : daripada storan Proses sistem mendapatkan ciri adalah tugas jenis IO. Contohnya, tanya sistem KV jauh.
  2. Pengendali penukaran : Menukar ciri selepas ia diperoleh secara tempatan adalah tugas yang intensif dari segi pengiraan. Sebagai contoh, Hash nilai ciri.

Jadi dalam pelaksanaan sebenar, adalah perlu untuk mempertimbangkan penjadualan pelbagai jenis tugas, memaksimumkan penggunaan sumber mesin dan mengoptimumkan keseluruhan proses yang memakan masa. Menggabungkan penyelidikan industri dan amalan sendiri, tiga pelaksanaan berikut telah dijalankan:

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

  1. Pembahagian Peringkat berdasarkan jenis tugasan: Bahagikan keseluruhan proses kepada dua peringkat: pemerolehan dan pengiraan Pecahan dalaman Peringkat diproses secara selari, dan Peringkat sebelumnya selesai Kemudian laksanakan Peringkat seterusnya. Ini adalah penyelesaian yang kami gunakan pada hari-hari awal Ia mudah untuk dilaksanakan dan boleh memilih saiz serpihan yang berbeza berdasarkan jenis tugasan yang berbeza Contohnya, tugasan jenis IO boleh menggunakan serpihan yang lebih besar. Tetapi kelemahannya juga jelas, yang akan mengakibatkan superposisi ekor panjang peringkat yang berbeza Ekor panjang setiap peringkat akan menjejaskan keseluruhan proses yang memakan masa.
  2. Peringkat Bahagi berdasarkan saluran paip: Untuk mengurangkan tindanan ekor panjang bagi Peringkat berbeza, anda boleh membahagikan data dan baca untuk setiap ciri Ambil serpihan dan tambahkan panggilan balik untuk memanggil semula tugas pengkomputeran selepas tugas IO selesai, menjadikan keseluruhan proses lancar seperti barisan pemasangan. Penjadualan serpihan boleh membenarkan serpihan yang peringkat sebelumnya sedia lebih awal untuk memasuki peringkat seterusnya lebih awal, mengurangkan masa menunggu dan dengan itu mengurangkan ekor panjang masa permintaan keseluruhan. Walau bagaimanapun, kelemahannya ialah saiz serpihan bersatu tidak dapat meningkatkan sepenuhnya penggunaan setiap Peringkat serpihan yang lebih kecil akan membawa lebih banyak penggunaan rangkaian kepada tugas IO, dan serpihan yang lebih besar akan meningkatkan penggunaan masa tugas pengkomputeran.
  3. Berdasarkan pendekatan SEDA (Staged Event-Driven Architecture) : Pendekatan dipacu peristiwa berperingkat menggunakan baris gilir untuk mengasingkan peringkat pemerolehan dan pengiraan peringkat, dan setiap peringkat adalah ditugaskan bebas Kumpulan benang dan baris gilir pemprosesan kelompok menggunakan elemen N (faktor batching) setiap kali. Ini membolehkan setiap Peringkat memilih saiz serpihan secara bebas, dan model dipacu peristiwa juga boleh memastikan proses berjalan lancar. Inilah yang sedang kita terokai.

Kod yang dihasilkan secara dinamik mengurangkan kebolehbacaan kod dan meningkatkan kos penyahpepijatan Walau bagaimanapun, menggunakan CodeGen sebagai lapisan penyesuaian juga menyediakan penyelesaian yang lebih mendalam. Pengoptimuman membuka ruang. Berdasarkan CodeGen dan pelaksanaan tanpa sekatan asynchronous, faedah yang baik telah dicapai dalam talian Di satu pihak, ia mengurangkan pengiraan ciri yang memakan masa, sebaliknya, ia juga mengurangkan beban CPU dengan ketara dan meningkatkan daya pemprosesan sistem. Pada masa hadapan, kami akan terus memanfaatkan CodeGen dan melaksanakan pengoptimuman yang disasarkan dalam proses penyusunan bahagian belakang, seperti meneroka gabungan arahan perkakasan ( seperti SIMD) atau pengkomputeran heterogen ( seperti GPU) untuk pengoptimuman yang lebih mendalam.

4.2 Pengoptimuman Penghantaran

Perkhidmatan ramalan dalam talian ialah seni bina dua lapisan secara keseluruhan Lapisan pengekstrakan ciri bertanggungjawab untuk penghalaan model dan pengiraan ciri, dan lapisan pengiraan model bertanggungjawab untuk pengiraan model. Proses sistem asal adalah untuk menyambung hasil pengiraan ciri ke dalam matriks M (Saiz Kelompok Diramalkan) × N (Lebar Sampel), dan kemudian bersiri dan menghantarnya ke pengkomputeran lapisan. Sebab untuk ini, dalam satu pihak, sebab sejarah Format input banyak model ringkas bukan DNN adalah matriks Selepas lapisan penghalaan disambungkan, lapisan pengkomputeran boleh digunakan secara langsung tanpa penukaran , format tatasusunan agak padat dan boleh Menjimatkan masa pada penghantaran rangkaian. Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulangWalau bagaimanapun, dengan pembangunan berulang model, model DNN secara beransur-ansur menjadi arus perdana, dan keburukan penghantaran matriks juga sangat jelas:

  1. Skala yang lemah: Format data disatukan dan tidak serasi dengan nilai ciri jenis bukan angka.
  2. Kehilangan prestasi penghantaran: Berdasarkan format matriks, ciri perlu diselaraskan Contohnya, dimensi Pertanyaan/Pengguna perlu disalin dan diselaraskan dengan setiap Item , yang meningkatkan Permintaan jumlah data penghantaran rangkaian daripada lapisan pengkomputeran.

Untuk menyelesaikan masalah di atas, proses yang dioptimumkan menambah lapisan penukaran di atas lapisan penghantaran untuk menukar ciri model yang dikira ke dalam Format yang diperlukan, seperti Tensor, matriks atau format CSV untuk kegunaan luar talian, dsb. Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulangKebanyakan model dalam talian sebenar adalah model TF Untuk menjimatkan penggunaan penghantaran lagi, platform mereka bentuk format Tensor Sequence untuk menyimpan setiap matriks Tensor: antaranya, r_flag digunakan untuk menandakan sama ada ia. ialah ciri jenis item , panjang mewakili panjang ciri item, nilainya ialah M (Bilangan Item)×NF (Panjang ciri), data digunakan untuk menyimpan nilai ciri sebenar, untuk ciri Item, nilai Ciri M disimpan rata, dan ciri jenis permintaan diisi terus. Berdasarkan format Jujukan Tensor yang padat, struktur data lebih padat dan jumlah data yang dihantar melalui rangkaian dikurangkan. Format penghantaran yang dioptimumkan juga telah mencapai hasil yang baik dalam talian Saiz permintaan lapisan penghalaan yang memanggil lapisan pengkomputeran telah dikurangkan sebanyak 50%+, dan masa penghantaran rangkaian telah dikurangkan dengan ketara.

4.3 Pengekodan ciri ID dimensi tinggi

Ciri diskrit dan ciri jujukan boleh disatukan menjadi ciri Jarang Dalam peringkat pemprosesan ciri, ciri asal akan dicincang dan menjadi ciri kelas ID. Dalam menghadapi ciri dengan ratusan bilion dimensi, proses penggabungan rentetan dan pencincangan tidak dapat memenuhi keperluan dari segi ruang ekspresi dan prestasi. Berdasarkan penyelidikan industri, kami mereka bentuk dan menggunakan format pengekodan ciri berdasarkan pengekodan Slot:

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

Antaranya, feature_hash ialah Hash bagi ciri asal nilai nilai selepas. Ciri integer boleh diisi secara langsung Ciri bukan integer atau ciri silang dicincang terlebih dahulu dan kemudian diisi Jika nombor melebihi 44 bit, ia akan dipotong. Selepas skim pengekodan Slot dilancarkan, ia bukan sahaja meningkatkan prestasi pengiraan ciri dalam talian, tetapi juga meningkatkan kesan model dengan ketara.

5 Sampel Pembinaan

5.1 Penstriman Sampel

Untuk menyelesaikan masalah konsistensi dalam talian dan luar talian, industri secara amnya Data ciri yang digunakan dalam pemarkahan masa nyata pembuangan dalam talian dipanggil petikan ciri dan bukannya membina sampel melalui penyambungan label luar talian yang mudah dan pengisian semula ciri, kaedah ini akan menyebabkan ketidakkonsistenan data yang besar. Seni bina asal ditunjukkan dalam rajah di bawah:

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

Apabila skala ciri menjadi lebih besar dan senario lelaran menjadi lebih kompleks, penyelesaian ini menjadi semakin menonjol. Masalah terbesar ialah perkhidmatan pengekstrakan ciri dalam talian berada di bawah tekanan yang besar, dan kedua, kos mengumpul keseluruhan aliran data adalah terlalu tinggi. Penyelesaian pengumpulan sampel ini mempunyai masalah berikut:

  1. Masa kesediaan yang lama: Di bawah kekangan sumber sedia ada, menjalankan data besar sedemikian hampir mengambil masa T+2 Sahaja maka bolehkah data sampel bersedia dan menjejaskan lelaran model algoritma.
  2. Penggunaan sumber yang tinggi: Kaedah pengumpulan sampel sedia ada adalah untuk mengira ciri-ciri semua permintaan dan menyambungkannya dengan pendedahan dan klik Memandangkan ciri-ciri item yang tidak terdedah adalah dikira , Data jatuh daripada jadual, mengakibatkan sejumlah besar data yang disimpan dan menggunakan banyak sumber.

5.1.1 Penyelesaian biasa

Untuk menyelesaikan masalah di atas, terdapat dua penyelesaian biasa dalam industri: ①Flink pemprosesan strim masa nyata; ②Pemprosesan sekunder cache KV. Proses khusus ditunjukkan dalam rajah di bawah:

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang


  1. Penyelesaian penyambungan penstriman: Gunakan keupayaan pemprosesan strim kependaman rendah bagi rangka kerja pemprosesan penstriman (Flink, Storm, dsb.) untuk membaca terus pendedahan/ klik Strim masa nyata dikaitkan (Sertai) dengan data strim syot kilat ciri dalam ingatan sampel latihan penstriman mula-mula dijana dan kemudian dipindahkan ke sampel latihan luar talian. Sampel penstriman dan sampel luar talian masing-masing disimpan dalam enjin storan yang berbeza, menyokong pelbagai jenis kaedah latihan model. Masalah dengan penyelesaian ini: Jumlah data dalam pautan aliran data masih sangat besar, menduduki lebih banyak sumber aliran mesej ( seperti Kafka penggunaan sumber Flink terlalu besar G sesaat, lakukan Window Join memerlukan 30 minit × 60 × 100G sumber memori.
  2. Skim caching KV: Tulis semua petikan ciri pengekstrakan ciri ke dalam storan KV (seperti Redis) dan cachekannya selama N minit, dan sistem perniagaan lulus Mekanisme mesej menghantar Item dalam baris gilir calon ke sistem pengkomputeran masa nyata (Flink atau aplikasi pengguna Jumlah Item pada masa ini akan jauh lebih sedikit daripada jumlah Item yang diminta sebelum ini Dengan cara ini, ciri-ciri Item ini akan Data diambil daripada cache syot kilat ciri dan output melalui aliran mesej untuk menyokong latihan penstriman. Kaedah ini bergantung pada storan luaran Tanpa mengira peningkatan dalam ciri atau trafik, sumber Flink boleh dikawal dan operasinya lebih stabil. Tetapi masalah tertunggak masih memerlukan memori yang lebih besar untuk menyimpan sejumlah besar data.

5.1.2 Penambahbaikan dan pengoptimuman

Dari perspektif mengurangkan pengiraan tidak sah, tidak semua data yang diminta akan didedahkan. Strategi ini mempunyai permintaan yang lebih kukuh untuk data terdedah, jadi pemajuan pemprosesan peringkat hari kepada pemprosesan strim boleh meningkatkan masa kesediaan data dengan ketara. Kedua, bermula dari kandungan data, ciri-ciri termasuk data berubah peringkat permintaan dan data berubah peringkat hari Pautan secara fleksibel memisahkan pemprosesan kedua-duanya, yang boleh meningkatkan penggunaan sumber dengan ketara. Angka berikut ialah pelan khusus.

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

1. Pemisahan data: Selesaikan masalah volum penghantaran data yang besar (Masalah aliran syot kilat ciri), Label yang diramalkan Memadankan data masa nyata satu demi satu, data luar talian boleh diakses dua kali semasa aliran semula, yang boleh mengurangkan saiz aliran data pautan dengan banyak.

  • Hanya terdapat ciri konteks + masa nyata dalam strim sampel, yang meningkatkan kestabilan strim data baca Pada masa yang sama, kerana hanya ciri masa nyata perlu disimpan, storan cakera keras Kafka dikurangkan sebanyak 10+ kali ganda.

2. Penggunaan tertunda Kaedah join : Menyelesaikan masalah penggunaan memori yang besar.

  • Strim pendedahan digunakan sebagai arus perdana dan ditulis kepada HBase Pada masa yang sama, untuk membolehkan aliran lain didedahkan pada Sertai dalam HBase kemudian RowKey ditulis kepada Redis; strim berikutnya melepasi RowKey Apabila menulis kepada HBase, penyambungan pendedahan, klik dan ciri diselesaikan dengan bantuan storan luaran, memastikan sistem boleh berjalan dengan stabil apabila jumlah data meningkat.
  • Strim sampel digunakan dengan kelewatan Strim sampel perkhidmatan latar belakang selalunya tiba sebelum strim pendedahan Untuk menyertai 99%+ data pendedahan, strim sampel menunggu statistik tetingkap mestilah sekurang-kurangnya N Minit atau lebih; ​​kaedah pelaksanaan adalah untuk menyimpan semua data dalam tempoh tetingkap pada cakera Kafka, dan menggunakan prestasi bacaan berurutan cakera untuk menghilangkan jumlah memori yang besar yang diperlukan untuk cache data semasa tempoh tingkap.

3. Sampel rakaman tambahan ciri : Melalui Label’s Join, bilangan permintaan ciri yang ditambahkan di sini adalah kurang daripada 20% daripada sampel dalam talian Pembacaan tertunda, selepas sambung dengan pendedahan, tapis permintaan perkhidmatan model pendedahan (Konteks+ciri masa nyata), kemudian rekod semua ciri luar talian, kumpulkan data sampel yang lengkap dan tuliskannya ke HBase.

5.2 Storan Berstruktur

Dengan lelaran perniagaan, bilangan ciri dalam petikan ciri menjadi lebih besar dan lebih besar, menjadikan petikan ciri keseluruhan menjangkau berpuluh-puluh dalam satu senario perniagaan TB tahap/hari; dari sudut storan, gambaran ciri perniagaan tunggal selama beberapa hari sudah berada pada tahap PB, hampir mencapai ambang storan algoritma pengiklanan, tekanan storan adalah tinggi; sudut pandangan pengiraan, menggunakan Proses pengiraan asal, disebabkan oleh had sumber enjin pengkomputeran (Spark) ( shuffle digunakan, data dalam fasa tulis shuffle akan ditulis pada cakera. Jika memori yang diperuntukkan tidak mencukupi, penulisan berbilang cakera dan pengisihan luaran akan berlaku ), memerlukan memori dengan saiz yang sama dengan datanya sendiri dan lebih banyak CU pengkomputeran untuk melengkapkan pengiraan dengan berkesan, menduduki memori tinggi . Proses teras proses pembinaan sampel ditunjukkan dalam rajah di bawah:

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

Apabila merakam semula ciri, terdapat masalah berikut:

  1. Lewahan data : Jadual luar talian ciri tambahan biasanya merupakan jumlah data penuh, dengan bilangan entri dalam ratusan juta Bilangan entri yang digunakan dalam pembinaan sampel adalah kira-kira bilangan DAU pada hari itu. iaitu berpuluh-puluh juta, jadi data jadual ciri entri tambahan adalah dalam penyertaan Terdapat data berlebihan dalam pengiraan.
  2. Tertib Sertai: Proses pengiraan ciri tambahan ialah pelengkapan ciri dimensi Terdapat berbilang pengiraan Sertaan, jadi prestasi pengiraan Sertaan dan susunan jadual Sertai Ia mempunyai banyak kaitan dengannya. Seperti yang ditunjukkan dalam rajah di atas, jika jadual kiri adalah jadual besar dengan berpuluh-puluh tahap TB, maka proses pengiraan shuffle seterusnya akan menghasilkan sejumlah besar IO rangkaian dan IO cakera.

Untuk menyelesaikan masalah kecekapan pembinaan sampel yang perlahan, kami akan mulakan dengan pengurusan struktur data dalam jangka pendek Proses terperinci adalah seperti rajah di bawah:

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

  1. Pecah berstruktur. Data dibahagikan kepada data Konteks dan storan berstruktur data dimensi dan bukannya storan bercampur. Ia menyelesaikan masalah membawa sejumlah besar data berlebihan dalam proses penyambungan ciri baharu sampel Label dan selepas storan berstruktur, mampatan storan yang hebat dicapai untuk ciri luar talian.
  2. prapemproses penapis kecekapan tinggi . Penapisan data dimajukan sebelum Sertai, yang mengurangkan jumlah data yang terlibat dalam pengiraan ciri dan boleh mengurangkan IO rangkaian dengan berkesan. Semasa proses penyambungan, jadual Hive untuk rakaman tambahan ciri secara amnya ialah jadual penuh, dan bilangan item data secara amnya ialah aktiviti bulanan Walau bagaimanapun, bilangan item data yang digunakan dalam proses penyambungan sebenar adalah lebih kurang aktiviti harian. jadi terdapat sejumlah besar redundansi data , data tidak sah akan membawa tambahan IO dan pengiraan. Kaedah pengoptimuman adalah untuk pra-mengira Kekunci dimensi dan menjana penapis Bloom yang sepadan Gunakan penapis Bloom untuk menapis apabila membaca data, yang boleh mengurangkan penghantaran data berlebihan dan pengiraan berlebihan semasa proses rakaman tambahan.
  3. Berprestasi tinggi Sertai. Gunakan strategi yang cekap untuk mengatur urutan Sertai untuk meningkatkan kecekapan dan penggunaan sumber proses pendaftaran semula ciri. Semasa proses penyambungan ciri, akan terdapat operasi penyambungan pada berbilang jadual, dan susunan penyambungan juga akan mempengaruhi prestasi penyambungan. Seperti yang ditunjukkan dalam rajah di atas, jika jumlah data dalam jadual kiri yang akan disambung adalah besar, prestasi keseluruhan akan menjadi lemah. Anda boleh menggunakan idea algoritma Huffman untuk menganggap setiap jadual sebagai nod, dan jumlah data yang sepadan sebagai beratnya Jumlah pengiraan Join antara jadual boleh dianalogikan dengan penambahan berat dua nod. Oleh itu, masalah ini boleh diabstraksikan ke dalam membina pokok Huffman, dan proses pembinaan pokok Huffman adalah susunan Gabung yang optimum.

Sumber storan luar talian data telah disimpan sebanyak 80%+ dan kecekapan pembinaan sampel telah ditingkatkan sebanyak 200%+ Pada masa ini, keseluruhan data sampel juga sedang dilaksanakan berdasarkan di tasik data untuk meningkatkan lagi kecekapan data.

6 Penyediaan Data

Platform ini telah mengumpulkan sejumlah besar kandungan berharga seperti ciri, sampel dan model serta berharap dapat membantu ahli strategi dengan menggunakan semula aset data ini. Jalankan lelaran perniagaan yang lebih baik dan capai faedah perniagaan yang lebih baik. Pengoptimuman ciri menyumbang 40% daripada semua kaedah yang digunakan oleh kakitangan algoritma untuk meningkatkan kesan model Walau bagaimanapun, kaedah perlombongan ciri tradisional mempunyai masalah seperti penggunaan masa yang lama, kecekapan perlombongan yang rendah dan perlombongan ciri yang berulang Oleh itu, platform berharap untuk memperkasakan dimensi ciri. Jika terdapat proses percubaan automatik untuk mengesahkan kesan mana-mana ciri dan mengesyorkan penunjuk kesan akhir kepada pengguna, ia sudah pasti akan membantu ahli strategi menjimatkan banyak masa. Apabila keseluruhan pembinaan pautan selesai, anda hanya perlu memasukkan set calon ciri yang berbeza untuk mengeluarkan penunjuk kesan yang sepadan. Untuk tujuan ini, platform telah membina mekanisme pintar untuk "penambahan", "penolakan", "pendaraban" dan "pembahagian" ciri dan sampel.

6.1 Lakukan "penambahan"

Pengesyoran ciri adalah berdasarkan kaedah ujian model, menggunakan semula ciri ke dalam model sedia ada dalam barisan perniagaan lain dan membina sampel dan model baharu ; kesan luar talian model baharu dan model Asas, dapatkan manfaat ciri baharu dan secara automatik menolaknya kepada pemimpin perniagaan yang berkaitan. Proses pengesyoran ciri khusus ditunjukkan dalam rajah di bawah:

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

  1. Kesedaran ciri: Cetuskan pengesyoran ciri melalui dinding dalam talian atau kaedah inventori antara perniagaan Ciri ini telah disahkan pada tahap tertentu, yang boleh memastikan kadar kejayaan pengesyoran ciri .
  2. Pengeluaran sampel: Ciri diekstrak daripada fail konfigurasi semasa pengeluaran sampel dan proses menambah ciri baharu pada fail konfigurasi secara automatik , dan kemudian Pengeluaran data sampel baharu. Selepas memperoleh ciri baharu, analisa ciri asal, dimensi dan pengendali UDF yang bergantung pada ciri ini, dan sepadukan konfigurasi ciri baharu dan data asal bergantung ke dalam fail konfigurasi asal model garis dasar untuk membina fail konfigurasi ciri baharu. Bina sampel baharu secara automatik Semasa pembinaan sampel, ciri yang berkaitan diekstrak daripada gudang ciri melalui nama ciri, dan UDF yang dikonfigurasikan dipanggil untuk pengiraan ciri.
  3. Latihan model: Ubah struktur model dan konfigurasi format sampel secara automatik, kemudian lakukan latihan model, menggunakan TensorFlow sebagai rangka kerja latihan model . Gunakan format tfrecord sebagai input sampel, dan letakkan ciri baharu ke dalam kumpulan A dan B mengikut kelas berangka dan kelas ID masing-masing Ciri kelas ID melakukan operasi carian jadual dan kemudiannya disertakan dengan ciri sedia ada tidak perlu mengubah suai struktur model Sampel baru boleh diterima untuk latihan model.
  4. Konfigurasikan parameter latihan model baharu secara automatik : termasuk tarikh latihan, laluan sampel, hiperparameter model, dsb., dibahagikan kepada set latihan dan ujian set , latih model baharu secara automatik.
  5. Penilaian model: Panggil antara muka penilaian untuk mendapatkan penunjuk luar talian, bandingkan keputusan penilaian model baharu dan lama, dan simpan keputusan penilaian ciri tunggal Selepas putus beberapa ciri, Berikan sumbangan satu ciri. Keputusan penilaian dihantar secara seragam kepada pengguna.

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

6.2 Melakukan "tolak"

Selepas pengesyoran ciri dilaksanakan dalam iklan dan telah mencapai faedah tertentu, kami Membuat beberapa penerokaan baharu pada tahap pemerkasaan ciri. Dengan pengoptimuman berterusan model, kelajuan pengembangan ciri adalah sangat pantas, dan penggunaan sumber perkhidmatan model meningkat secara mendadak. Oleh itu, platform telah membina satu set alat penapisan ciri hujung ke hujung.

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

  1. Pemarkahan ciri : oleh WOE (Weight Of Evidence, Weight of Evidence ) dan algoritma penilaian lain memberikan markah untuk semua ciri model Ciri dengan skor yang lebih tinggi mempunyai kualiti yang lebih tinggi dan ketepatan penilaian yang lebih tinggi.
  2. Pengesahan kesan: Selepas melatih model, susun mengikut skor dan hapuskan ciri dalam kelompok. Secara khusus, kaedah pecah ciri digunakan untuk membandingkan keputusan penilaian model asal dan model pecah Apabila perbezaan lebih besar daripada ambang, penilaian berakhir dan ciri yang boleh dihapuskan diberikan.
  3. Penyelesaian hujung ke hujung: Selepas pengguna mengkonfigurasi parameter percubaan dan ambang penunjuk, ciri boleh dipadam dan model selepas memadamkan ciri boleh disediakan tanpa manusia keputusan penilaian luar talian intervensi.

Akhirnya, selepas 40% ciri berada di luar talian dalam model dalaman, penurunan dalam penunjuk perniagaan masih dikawal dalam ambang yang munasabah.

6.3 Melakukan "pendaraban"

Untuk mendapatkan kesan model yang lebih baik, beberapa penerokaan baharu telah dimulakan dalam pengiklanan, termasuk model besar, masa nyata dan ciri perpustakaan menunggu. Terdapat matlamat utama di sebalik penerokaan ini: keperluan untuk data yang lebih banyak dan lebih baik untuk menjadikan model lebih pintar dan lebih cekap. Bermula dari situasi semasa pengiklanan, pembinaan pangkalan data sampel (Bank Data) dicadangkan untuk membawa lebih banyak jenis dan skala data luaran yang lebih besar dan menggunakannya pada perniagaan sedia ada. Khususnya seperti yang ditunjukkan dalam rajah di bawah:

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

Kami telah mewujudkan platform perkongsian sampel universal, di mana barisan perniagaan lain boleh dipinjam untuk menjana sampel Tambahan . Ia juga membina seni bina perkongsian Embedding yang sama untuk merealisasikan integrasi perniagaan berskala besar dan berskala kecil. Berikut ialah contoh penggunaan semula sampel bukan pengiklanan dalam baris perniagaan pengiklanan Kaedah khusus adalah seperti berikut:

  1. Memperluaskan sampel: Berdasarkan rangka kerja pemprosesan penstriman Flink, perpustakaan sampel yang sangat berskala Perniagaan A boleh menggunakan semula perniagaan B dan perniagaan dengan mudah C. Gunakan pendedahan, klik dan data Label lain untuk melakukan eksperimen. Khusus untuk barisan perniagaan kecil, sejumlah besar data nilai telah diperluaskan Berbanding dengan pendaftaran tambahan luar talian, pendekatan ini akan mempunyai konsistensi yang lebih kukuh.
  2. Perkongsian: Selepas sampel siap, senario aplikasi yang sangat tipikal ialah pembelajaran pemindahan. Selain itu, laluan data yang dikongsi oleh Embedding juga dibina ( tidak banyak bergantung pada proses "pengembangan sampel" Semua barisan perniagaan boleh dilatih berdasarkan Pembenaman besar Setiap pihak perniagaan juga boleh mengemas kini ini Membenamkan dan mencipta mekanisme Versi dalam talian untuk digunakan oleh berbilang perniagaan.

Contohnya, dengan menggunakan semula sampel bukan pengiklanan ke dalam perniagaan dalam pengiklanan, bilangan sampel telah meningkat beberapa kali Digabungkan dengan algoritma pembelajaran pemindahan, AUC luar talian telah meningkat sebanyak seribu mata Keempat, CPM akan meningkat sebanyak 1% selepas pergi ke dalam talian. Di samping itu, kami juga sedang membina perpustakaan tema sampel pengiklanan untuk mengurus data sampel yang dijana oleh setiap perniagaan secara seragam (Metadata bersatu), dan mendedahkan pengelasan tema sampel bersatu kepada pengguna untuk pendaftaran, carian dan penggunaan semula dengan pantas. Storan bersatu untuk lapisan bawah, menjimatkan storan dan sumber pengkomputeran, mengurangkan gabungan data dan meningkatkan ketepatan masa.

6.4 Melakukan "division"

Melalui ciri "subtraction", beberapa ciri yang tidak mempunyai kesan positif boleh dihapuskan, tetapi melalui pemerhatian, didapati terdapat masih banyak ciri dengan sedikit nilai dalam ciri model. Oleh itu, kita boleh mengambil langkah lebih jauh dengan mempertimbangkan secara menyeluruh kedua-dua nilai dan kos Di bawah kekangan berasaskan kos keseluruhan pautan, kita boleh menapis ciri tersebut dengan input dan output yang agak rendah dan mengurangkan penggunaan sumber. Proses penyelesaian di bawah kekangan kos ini ditakrifkan sebagai "pembahagian". Proses keseluruhan ditunjukkan dalam rajah di bawah.

Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang

Dalam dimensi luar talian, kami telah mewujudkan sistem penilaian nilai ciri untuk memberikan kos dan nilai ciri boleh digunakan penaakulan dalam talian Maklumat digunakan untuk melakukan kemerosotan trafik, pengiraan keanjalan ciri dan operasi lain Langkah-langkah utama untuk "pembahagian" adalah seperti berikut:

  1. Abstraksi Masalah: Jika Kami boleh mendapatkan skor nilai setiap ciri dan kos ciri tersebut (storan, komunikasi, pengkomputeran dan pemprosesan ), maka masalah itu ditukar kepada Bagaimana untuk memaksimumkan nilai ciri yang diberikan struktur model yang diketahui dan kos sumber tetap.
  2. Penilaian nilai di bawah kekangan kos: Berdasarkan set ciri model, platform mula-mula melaksanakan ringkasan statistik kos dan nilai ; kos termasuk Kos luar talian dan kos dalam talian adalah berdasarkan model penilaian terlatih untuk mendapatkan kedudukan ciri yang komprehensif.
  3. Pemodelan senario: Anda boleh memilih set ciri yang berbeza untuk pemodelan berdasarkan keadaan sumber yang berbeza. Dengan sumber yang terhad, pilih model dengan nilai terbaik untuk berfungsi dalam talian. Selain itu, ia boleh dimodelkan untuk set ciri yang agak besar dan didayakan semasa puncak trafik rendah untuk meningkatkan penggunaan sumber dan membawa manfaat yang lebih besar kepada perniagaan. Satu lagi senario aplikasi ialah kemerosotan trafik Perkhidmatan inferens memantau penggunaan sumber dalam talian Setelah pengiraan sumber mencapai kesesakan, ia beralih kepada model degradasi.

7 Ringkasan dan Tinjauan

Di atas adalah amalan anti-"peningkatan" kami dalam projek pembelajaran mendalam berskala besar untuk membantu Kurangkan kos perniagaan dan tingkatkan kecekapan. Pada masa hadapan, kami akan terus meneroka dan berlatih dalam aspek berikut:

  1. Berasaskan GPU pautan penuh : Pada peringkat inferens, sambil menyokong lelaran perniagaan yang lebih kompleks melalui penukaran GPU, kos keseluruhan juga sangat tinggi Selepas itu, kami akan melaksanakan transformasi berasaskan GPU pada pembinaan sampel dan perkhidmatan ciri, dan bersama-sama mempromosikan peningkatan tahap latihan luar talian.
  2. Tasik Data Sampel: Bina gudang sampel yang lebih besar melalui Evolusi Skema, Kemas Kini Patch dan ciri lain tasik data, yang akan meningkatkan bahagian perniagaan Menjalankan pendedahan data kos rendah dan bernilai tinggi.
  3. Jalur Paip: Dalam proses lelaran kitaran hayat penuh algoritma, banyak aspek penyahpepijatan, maklumat pautan tidak cukup "siri" , dan luar talian Perspektif , dalam talian dan penunjuk kesan secara relatifnya berpecah-belah Standardisasi dan kebolehmerhatian berdasarkan keseluruhan pautan adalah arah aliran umum, dan ini adalah asas untuk penggunaan pintar dan anjal bagi pautan berikutnya. MLOps dan cloud native, yang popular dalam industri sekarang, mempunyai banyak idea rujukan.
  4. Padanan pintar data dan model: Seperti yang dinyatakan di atas, di bawah premis bahawa struktur model adalah tetap, ciri ditambah dan ditolak secara automatik pada model , pada peringkat model, tetap Di bawah premis input ciri tertentu, beberapa struktur model baharu boleh dibenamkan secara automatik. Dan pada masa hadapan, kami juga akan melengkapkan pemadanan data dan model secara automatik melalui ciri platform dan sistem model berdasarkan bidang perniagaan.

8 Pengarang artikel ini

Ya Jie, Ying Liang, Chen Long, Cheng Jie, Deng Feng, Dong Kui, Tong Ye, Simin, Lebin, dsb., semuanya datang daripada pasukan teknikal penghantaran makanan Meituan.

Atas ialah kandungan terperinci Amalan kejuruteraan model pembelajaran mendalam berskala besar untuk pengiklanan bawa pulang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:51cto.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan