Pertempuran sebenar penggunaan berskala besar model Bytedance
1. Pengenalan latar belakang
Dalam ByteDance, aplikasi berdasarkan pembelajaran mendalam berkembang di mana-mana Walaupun jurutera memfokuskan pada kesan model, mereka juga perlu memberi perhatian kepada perkhidmatan dalam talian konsisten dan prestasi , pada masa awal, ini biasanya memerlukan pembahagian kerja dan kerjasama yang erat antara pakar algoritma dan pakar kejuruteraan Model ini mempunyai kos yang agak tinggi seperti penyelesaian masalah dan pengesahan.
Dengan populariti rangka kerja PyTorch/TensorFlow, latihan model pembelajaran mendalam dan penaakulan dalam talian telah disatukan Pembangun hanya perlu memberi perhatian kepada logik algoritma tertentu dan memanggil API Python untuk menyelesaikan latihan proses pengesahan Selepas itu, model boleh Sangat mudah untuk bersiri dan mengeksport, dan kerja penaakulan diselesaikan oleh enjin C++ berprestasi tinggi yang bersatu. Pengalaman pembangun yang dipertingkatkan daripada latihan kepada penggunaan.
Walau bagaimanapun, perkhidmatan yang lengkap biasanya juga mengandungi sejumlah besar pra-pemprosesan/pasca-pemprosesan dan logik perniagaan lain ini biasanya memproses pelbagai input dan menukarkannya kepada Tensor, kemudian memasukkannya ke dalam model , dan kemudian model menghasilkan Tensor kemudian diproses ke dalam format sasaran Beberapa senario biasa adalah seperti berikut:
- Bert
- Resnet
- Prestasi: Kebanyakan penyelesaian ini berdasarkan pelaksanaan mesin maya Penyelesaian mesin maya adalah fleksibel dan sangat terkawal, tetapi kebanyakan mesin maya dalam rangka kerja pembelajaran mendalam biasanya Prestasi tidak cukup baik. Sebagai tambahan, rangka kerja telah direka untuk pengkomputeran Tensor pada hari-hari awal Kos setiap operator dalam pengkomputeran tatasusunan adalah sangat tinggi, dan kos penghantaran dan penjadualan mesin maya boleh diabaikan. Walau bagaimanapun, overhed porting ke pengaturcaraan bahasa pengaturcaraan adalah sukar untuk diabaikan, dan menulis terlalu banyak kod akan menjadi hambatan prestasi. Menurut ujian, prestasi penterjemah TorchScript hanya kira-kira 1/5 daripada Python, dan prestasi tf.function adalah lebih teruk lagi.
- Fungsi tidak lengkap: Malah, apabila digunakan pada senario sebenar, kami masih boleh menemui banyak fungsi penting yang tf.function/TorchScript tidak menyokong, seperti: sumber tersuai tidak boleh dibungkus dan hanya boleh bersiri terbina dalam jenis; String hanya boleh diproses oleh bait, dan unicode seperti bahasa Cina akan menyebabkan diff; tugas pembelajaran bukan mendalam, Contohnya, masih terdapat banyak aplikasi pembelajaran tidak mendalam atau subtugas dalam pemprosesan bahasa semula jadi, seperti anotasi jujukan, penyahkodan model bahasa, pembinaan ciri buatan model pokok, dll. Ini biasanya mempunyai paradigma ciri yang lebih fleksibel , tetapi pada masa yang sama mereka tidak dilaksanakan sepenuhnya Penyelesaian latihan dan promosi bersepadu hujung ke hujung masih memerlukan banyak kerja pembangunan dan pengesahan ketepatan.
- Untuk menyelesaikan masalah di atas, kami telah membangunkan penyelesaian prapemprosesan berasaskan kompilasi: MATXScript!
3. MATXScript
Dalam pembangunan algoritma pembelajaran mendalam, pembangun biasanya menggunakan Python untuk lelaran dan percubaan pantas, dan menggunakan C++ untuk membangunkan perkhidmatan dalam talian berprestasi tinggi, termasuk checksum ketepatan Pembangunan perkhidmatan akan menjadi beban yang lebih berat!
MatxScript (https://github.com/bytedance/matxscript) ialah pengkompil AOT untuk sub-bahasa Python, yang boleh menterjemah Python secara automatik ke dalam C++ dan menyediakan fungsi pembungkusan dan penerbitan satu klik. Menggunakan MATXScript membolehkan pembangun melakukan lelaran pada model dengan cepat sambil menggunakan perkhidmatan berprestasi tinggi pada kos yang lebih rendah.
Seni bina teras adalah seperti berikut:
- Lapisan paling rendah ialah perpustakaan asas C++/CUDA tulen, dibangunkan oleh pakar pengendali berprestasi tinggi.
- Di atas perpustakaan asas, perpustakaan Python dikapsulkan mengikut konvensyen dan boleh digunakan dalam proses latihan.
- Apabila inferens diperlukan, MATXScript boleh digunakan untuk menterjemah kod Python ke dalam kod C++ yang setara, menyusunnya ke dalam perpustakaan pautan dinamik, menambah model dan sumber bergantung lain serta membungkus dan menerbitkannya bersama-sama.
Antaranya, peranan penyusun adalah sangat kritikal, dan proses terasnya adalah seperti berikut:
Melalui proses di atas, proses kod pra-pemprosesan yang ditulis oleh pengguna boleh Ia disusun ke dalam JitOp dalam Talian Paip Untuk menghubungkan pra dan pasca pemprosesan dengan model, kami juga membangunkan sistem pengesanan (merujuk kepada PyTorch dalam reka bentuk antara muka). adalah seperti berikut:
Berdasarkan MATXScript, kami boleh menggunakan set kod yang sama untuk latihan dan inferens, yang sangat mengurangkan kos penggunaan model. Pada masa yang sama, seni bina dan algoritma dipisahkan, dan pelajar algoritma boleh bekerja sepenuhnya dalam Python pelajar Senibina menumpukan pada pembangunan pengkompil dan pengoptimuman masa jalan Dalam ByteDance, penyelesaian ini telah disahkan oleh penggunaan berskala besar.
4. Ujian kecil
Di sini kami mengambil prapemprosesan teks Inggeris yang paling mudah sebagai contoh untuk menunjukkan cara menggunakan MATXScript.
Matlamat: Menukar sekeping teks Bahasa Inggeris ke dalam indeks
- Tulis logik carian kamus asas
class Text2Ids: def __init__(self) -> None: self.table: Dict[str, int] = { "hello": 0, "world": 1, "[UNK]": 2, } def lookup(self, word: str) return self.table.get(word, 2) def__call__ (self, words: List[str]) return [self.lookup(w) for w in words]
- Tulis Pipeline
import matx class WorkFlow: def __init__(self): # 此处会进行代码编译,Python 代码自动编译封装为 Callable 对象 self.text2ids = matx.script(Text2Ids)() def process(self, texts): ids = self.text2ids(texts) return ids # test handler = WorkFlow() print(handler.process("hello world unknown")) # output: [0, 1, 2]
- Jejak eksport ke cakera
# dump mod = matx.trace(handler.process, "hello world") print(mod.run({"texts": "hello world"})) mod.save('./my_dir') # load mod = matx.load('./my_dir', -1) print(mod.run({"texts": "hello world"}))
- C++ beban
#include <string> #include <vector> #include <map> #include <iostream> #include <matxscript/pipeline/tx_session.h> using namespace ::matxscript::runtime; int main() { // test case std::unordered_map<std::string, RTValue> feed_dict; feed_dict.emplace("texts", Unicode(U"hello world")); std::vector<std::pair<std::string, RTValue>> result; const char* module_path = "./my_dir"; const char* module_name = "model.spec.json"; { // -1 mean cpu auto sess = TXSession::Load(module_path, module_name, -1); auto result = sess->Run(feed_dict); for (auto& r : result) { std::cout << "key: " << r.first << ", value: " << r.second << std::endl; } } return 0; }
Kod lengkap Lihat : https://github.com/bytedance/matxscript/tree/main/examples/text2ids
Ringkasan: Di atas ialah logik prapemprosesan yang sangat mudah dilaksanakan dalam Python tulen, dan boleh digunakan oleh C++ umum kod dimuatkan dan dijalankan Di bawah kami menggabungkan model untuk menunjukkan kes hujung ke hujung berbilang modal sebenar!
5. Kes berbilang modal
Di sini kami mengambil pelbagai mod grafik dan teks (Bert+Resnet) sebagai contoh Model ditulis menggunakan PyTorch untuk menunjukkan kerja sebenar dalam latihan dan penempatan.
- Persekitaran konfigurasi
a. Konfigurasikan gcc/cuda dan infrastruktur lain (biasanya pelajar operasi dan penyelenggaraan telah melakukan ini)
b Pasang MATXScript dan perpustakaan asas yang dibangunkan berdasarkannya ( teks, penglihatan dsb.) - Tulis kod model
a Dikecualikan di sini, anda boleh merujuk kepada kertas kerja atau pelaksanaan sumber terbuka lain untuk melakukannya sendiri - Tulis kod prapemprosesan <. 🎜>
from typing import List, Dict, Tuple import libcut import matx class Vocabulary: ... def utf8_decoder(s: List[bytes]): return [x.decode() for x in s] class TextNDArrayBuilder: ... class TextPipeline: def __init__(self, mode: str = "eval"): self.mode = mode self.cut_engine = libcut.Cutter('/path/to/cut_models', ...) self.vocab = matx.script(Vocabulary)('/path/to/vocab.txt') self.decoder = matx.script(utf8_decoder) self.input_builder = matx.script(TextNDArrayBuilder)(self.vocab) def process(self, text: List[bytes]): # List[bytes] 是对齐 C++ 的 vector<string> text: List[str] = self.decoder(text) words: List[List[str]] = self.cut_engine(text) batch_ids: List[List[int]] = self.vocab(words) input_ids, segment_ids, mask_ids = self.input_builder(batch_ids, 32) if self.mode == "train": return input_ids.torch(), segment_ids.torch(), mask_ids.torch() return input_ids, segment_ids, mask_ids
b. VisionPipeline melibatkan prapemprosesan GPU dan lebih sesuai untuk diproses secara berkelompok Anda perlu membina DataLoader yang berasingan dengan sendiri (kuburkan satu titik di sini, kami akan membuka DataLoader berbilang benang dalaman nanti)
from typing import List, Dict, Tuple import matx from matx import vision class VisionPipeline: def __init__(self, device_id: int = 0, mode: str = "eval", image_size: int = 224,): self.is_training = mode == 'train' self.mode = mode ... def process(self, image,): if self.is_training: decode_nds = self.random_crop_decode(image) flip_nds = self.random_flip(decode_nds) resize_nds = self.resize(flip_nds) transpose_nd = self.transpose_norm(resize_nds, vision.SYNC) else: decode_nds = self.decode(image) resize_nds = self.resize(decode_nds) crop_nds = self.center_crop(resize_nds) transpose_nd = self.transpose_norm(crop_nds, vision.SYNC) if self.mode == "trace": return transpose_nd return transpose_nd.torch()
- Eksport Model Inferens hujung ke hujung
- Ringkasan: Selepas langkah di atas, kita boleh melengkapkan penamat -to-end latihan & kerja pelepasan, dan keseluruhan proses Ia dilengkapkan dengan kod Python tulen dan boleh dikawal sepenuhnya oleh pelajar algoritma itu sendiri. Sudah tentu, jika terdapat masalah prestasi dalam pengiraan model itu sendiri, ia juga boleh diselesaikan di belakang tabir melalui pengubahsuaian dan pengoptimuman imej automatik.
- Nota: Untuk contoh kod lengkap, lihat https://github.com/bytedance/matxscript/tree/main/examples/e2e_multi_modal
class MultimodalEvalPipeline: def __init__(self): self.text_pipe = TextPipeline(mode="eval", ...) self.vision_pipe = VisionPipeline(mode="eval", ...) self.torch_model = torch.jit.load('/path/to/multimodal.jit', map_locatinotallow='cuda:0') self.tx_model_op = matx.script(self.torch_model, device=0) def eval(self, texts: List[bytes], images: List[bytes]) input_ids, segment_ids, mask_ids = self.text_pipe.process(texts) images = self.vision_pipe.process(images) scores = self.tx_model_op(input_ids, segment_ids, mask_ids, images) return scores # examples example_batch_size = 8 text_examples = ['hello, world'.encode()] * example_batch_size with open('/path/image.jpg', 'rb') as f: image_example = f.read() image_examples = [image_example] * example_batch_size # pipeline instance pipe = MultimodalEvalPipeline(...) mod = matx.trace(pipe.eval, text_examples, image_examples) # test print(mod.run({"texts": text_examples, "images": image_examples})) # save mod.save('/path/to/my_multimodal')
Pelayan lengkap termasuk: Protokol IDL, Strategi Batching, penjadualan dan susunan benang/benang, penaakulan model...
Di sini, kita hanya membincangkan penaakulan model, selebihnya Ia boleh dibangunkan seperti yang dipersetujui. Kami menggunakan fungsi utama untuk menggambarkan proses memuatkan dan menjalankan model:
Kod di atas ialah kes paling mudah memuatkan model berbilang mod dalam C++ Bagi pelajar yang membangunkan Pelayan, lakukan sahaja Dengan abstraksi dan konvensyen mudah, kod di atas boleh diubah menjadi rangka kerja perkhidmatan model C++ bersatu.7. Maklumat lanjut
Kami adalah pasukan sistem pembelajaran mesin Bytedance-AML, komited untuk menyediakan syarikat dengan rangka kerja bersepadu latihan berprestasi tinggi dan promosi, dan juga Ia akan memberi perkhidmatan kepada syarikat rakan kongsi melalui Platform Pembelajaran Mesin Volcano Engine Platform Pembelajaran Mesin Volcano dijangka menyediakan sokongan berkaitan MATX mulai 2023, termasuk persekitaran cermin pratetap, sampel awam senario biasa dan sokongan teknikal semasa akses dan penggunaan perusahaan. dsb., yang boleh mencapai pecutan kos rendah dan penyepaduan latihan dan senario inferens. Selamat datang untuk mengetahui lebih lanjut tentang produk kami di https://www.volcengine.com/product/ml-platform.
Atas ialah kandungan terperinci Pertempuran sebenar penggunaan berskala besar model Bytedance. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Ditulis sebelum ini, hari ini kita membincangkan bagaimana teknologi pembelajaran mendalam boleh meningkatkan prestasi SLAM berasaskan penglihatan (penyetempatan dan pemetaan serentak) dalam persekitaran yang kompleks. Dengan menggabungkan kaedah pengekstrakan ciri dalam dan pemadanan kedalaman, di sini kami memperkenalkan sistem SLAM visual hibrid serba boleh yang direka untuk meningkatkan penyesuaian dalam senario yang mencabar seperti keadaan cahaya malap, pencahayaan dinamik, kawasan bertekstur lemah dan seks yang teruk. Sistem kami menyokong berbilang mod, termasuk konfigurasi monokular, stereo, monokular-inersia dan stereo-inersia lanjutan. Selain itu, ia juga menganalisis cara menggabungkan SLAM visual dengan kaedah pembelajaran mendalam untuk memberi inspirasi kepada penyelidikan lain. Melalui percubaan yang meluas pada set data awam dan data sampel sendiri, kami menunjukkan keunggulan SL-SLAM dari segi ketepatan kedudukan dan keteguhan penjejakan.

Dalam gelombang perubahan teknologi yang pesat hari ini, Kecerdasan Buatan (AI), Pembelajaran Mesin (ML) dan Pembelajaran Dalam (DL) adalah seperti bintang terang, menerajui gelombang baharu teknologi maklumat. Ketiga-tiga perkataan ini sering muncul dalam pelbagai perbincangan dan aplikasi praktikal yang canggih, tetapi bagi kebanyakan peneroka yang baru dalam bidang ini, makna khusus dan hubungan dalaman mereka mungkin masih diselubungi misteri. Jadi mari kita lihat gambar ini dahulu. Dapat dilihat bahawa terdapat korelasi rapat dan hubungan progresif antara pembelajaran mendalam, pembelajaran mesin dan kecerdasan buatan. Pembelajaran mendalam ialah bidang khusus pembelajaran mesin dan pembelajaran mesin

Hampir 20 tahun telah berlalu sejak konsep pembelajaran mendalam dicadangkan pada tahun 2006. Pembelajaran mendalam, sebagai revolusi dalam bidang kecerdasan buatan, telah melahirkan banyak algoritma yang berpengaruh. Jadi, pada pendapat anda, apakah 10 algoritma teratas untuk pembelajaran mendalam? Berikut adalah algoritma teratas untuk pembelajaran mendalam pada pendapat saya Mereka semua menduduki kedudukan penting dari segi inovasi, nilai aplikasi dan pengaruh. 1. Latar belakang rangkaian saraf dalam (DNN): Rangkaian saraf dalam (DNN), juga dipanggil perceptron berbilang lapisan, adalah algoritma pembelajaran mendalam yang paling biasa Apabila ia mula-mula dicipta, ia dipersoalkan kerana kesesakan kuasa pengkomputeran tahun, kuasa pengkomputeran, Kejayaan datang dengan letupan data. DNN ialah model rangkaian saraf yang mengandungi berbilang lapisan tersembunyi. Dalam model ini, setiap lapisan menghantar input ke lapisan seterusnya dan

Menurut berita pada 13 Jun, menurut akaun awam “Volcano Engine” Byte, pembantu kecerdasan buatan Xiaomi “Xiao Ai” telah mencapai kerjasama dengan Volcano Engine Kedua-dua pihak akan mencapai pengalaman interaktif AI yang lebih pintar berdasarkan model besar beanbao . Dilaporkan bahawa model beanbao berskala besar yang dicipta oleh ByteDance boleh memproses sehingga 120 bilion token teks dengan cekap dan menjana 30 juta keping kandungan setiap hari. Xiaomi menggunakan model besar Doubao untuk meningkatkan keupayaan pembelajaran dan penaakulan modelnya sendiri dan mencipta "Xiao Ai Classmate", yang bukan sahaja memahami keperluan pengguna dengan lebih tepat, tetapi juga menyediakan kelajuan tindak balas yang lebih pantas dan perkhidmatan kandungan yang lebih komprehensif. Contohnya, apabila pengguna bertanya tentang konsep saintifik yang kompleks, &ldq

Baru-baru ini, DiffusionModel telah mencapai kemajuan yang ketara dalam bidang penjanaan imej, membawa peluang pembangunan yang belum pernah berlaku sebelum ini kepada tugas penjanaan imej dan penjanaan video. Walaupun hasil yang mengagumkan, sifat denoising berulang pelbagai langkah yang wujud dalam proses inferens model resapan menghasilkan kos pengiraan yang tinggi. Baru-baru ini, satu siri algoritma penyulingan model resapan telah muncul untuk mempercepatkan proses inferens model resapan. Kaedah-kaedah ini secara kasar boleh dibahagikan kepada dua kategori: i) penyulingan pemuliharaan trajektori; ii) penyulingan pembinaan semula trajektori. Walau bagaimanapun, kedua-dua jenis kaedah ini akan dihadkan oleh siling kesan terhad atau perubahan dalam domain output. Untuk menyelesaikan masalah ini, pasukan teknikal ByteDance mencadangkan kaedah konsisten pembahagian trajektori yang dipanggil Hyper-SD.

Rangkaian Neural Konvolusi (CNN) dan Transformer ialah dua model pembelajaran mendalam berbeza yang telah menunjukkan prestasi cemerlang pada tugasan yang berbeza. CNN digunakan terutamanya untuk tugas penglihatan komputer seperti klasifikasi imej, pengesanan sasaran dan pembahagian imej. Ia mengekstrak ciri tempatan pada imej melalui operasi lilitan, dan melakukan pengurangan dimensi ciri dan invarian ruang melalui operasi pengumpulan. Sebaliknya, Transformer digunakan terutamanya untuk tugas pemprosesan bahasa semula jadi (NLP) seperti terjemahan mesin, klasifikasi teks dan pengecaman pertuturan. Ia menggunakan mekanisme perhatian kendiri untuk memodelkan kebergantungan dalam jujukan, mengelakkan pengiraan berjujukan dalam rangkaian saraf berulang tradisional. Walaupun kedua-dua model ini digunakan untuk tugasan yang berbeza, ia mempunyai persamaan dalam pemodelan jujukan, jadi

Editor |. Kulit Lobak Sejak pengeluaran AlphaFold2 yang berkuasa pada tahun 2021, saintis telah menggunakan model ramalan struktur protein untuk memetakan pelbagai struktur protein dalam sel, menemui ubat dan melukis "peta kosmik" setiap interaksi protein yang diketahui. Baru-baru ini, Google DeepMind mengeluarkan model AlphaFold3, yang boleh melakukan ramalan struktur bersama untuk kompleks termasuk protein, asid nukleik, molekul kecil, ion dan sisa yang diubah suai. Ketepatan AlphaFold3 telah dipertingkatkan dengan ketara berbanding dengan banyak alat khusus pada masa lalu (interaksi protein-ligan, interaksi asid protein-nukleik, ramalan antibodi-antigen). Ini menunjukkan bahawa dalam satu rangka kerja pembelajaran mendalam yang bersatu, adalah mungkin untuk dicapai

Menurut akaun awam rasmi WeChat Kerajaan Daerah Nanshan "Innovation Nanshan", projek Shenzhen ByteDance Houhai Center telah mencapai kemajuan penting baru-baru ini. Menurut Syarikat Pembinaan dan Pembangunan Biro Kejuruteraan Pembinaan Pertama China, struktur utama projek itu telah dihadkan tiga hari lebih awal daripada jadual. Berita ini bermakna bahawa kawasan teras Nanshan Houhai akan mengantar bangunan mercu tanda baharu. Projek Shenzhen ByteDance Houhai Center terletak di kawasan teras Houhai, Daerah Nanshan Ia merupakan bangunan pejabat ibu pejabat Toutiao Technology Co., Ltd. di Shenzhen. Jumlah kawasan pembinaan adalah 77,400 meter persegi, dengan ketinggian kira-kira 150 meter dan sejumlah 4 tingkat bawah tanah dan 32 di atas tingkat bawah. Dilaporkan bahawa projek Shenzhen ByteDance Houhai Centre akan menjadi bangunan bertingkat tinggi yang inovatif yang menyepadukan pejabat, hiburan, katering dan fungsi lain. Projek ini akan membantu Shenzhen mempromosikan integrasi industri Internet
