Ölçeklenebilir, hızlı ve verimli BERT dağıtımı elde etmek için TensorFlow Extended kullanın!

Kaynak: TensorFlow

Bu makale hakkında 3144 kelime , Okumanız tavsiye edilir 9 dakika .

Bu makale, TensorFlow ekosistemi aracılığıyla ölçeklenebilir, hızlı ve verimli BERT dağıtımının nasıl uygulanacağını açıklar.

Transformatör modeli (özellikle BERT modeli ) NLP'ye büyük değişiklikler getirdi ve aynı zamanda duyarlılık analizi, varlık çıkarma ve soru cevaplama gibi görevlerin işlenmesinde yeni atılımlara sahip. BERT modeli, veri bilimcilerini devlerin omuzlarına koyuyor. Şirketler, modellerini geniş bir topluluk aracılığıyla önceden eğitmişlerdir.Veri bilimcileri, kendi alanlarındaki belirli sorunlara çığır açan çözümlere ulaşmak için bu eğitimli çok amaçlı Transformer modellerine aktarım öğrenmeyi uygulayabilir.

  • BERT modeli https://arxiv.org/abs/1810.04805

içinde SAP'nin Concur Laboratuvarları (www.concurlabs.com), seyahat ve harcamalar alanındaki bazı yeni sorunları çözmek için BERT'i kullanmayı umuyoruz. BERT muhakemesini basitleştirmeyi umuyoruz. Ne yazık ki, denediğimiz çözümlerin hiçbiri ideal değil.

Google / TensorFlow ekibiyle çalışarak ve en son geliştirme sonuçlarını benimseyerek nihayet hedefimize ulaştık: tutarlı, basit ve çok hızlı BERT modeli çıkarımı. Önerilen uygulamalarını kullanarak, orijinal metinden sınıflandırmaya kadar tahmini birkaç milisaniye içinde tamamlayabiliriz. Çeşitli TensorFlow kitaplıklarının ve bileşenlerinin bu dönüm noktasına ulaşmamıza nasıl yardımcı olduğuna bir göz atalım.

Bu makale kısaca size TensorFlow ekosistemi aracılığıyla ölçeklenebilir, hızlı ve verimli BERT dağıtımını nasıl uygulayacağınızı tanıtacaktır. Uygulama süreci hakkında daha fazla bilgi edinmek istiyorsanız, uygulama adımları hakkında ayrıntılı bilgi için lütfen bu makalenin ikinci bölümünü (henüz yayınlanmamıştır) kontrol edin. Bir demo dağıtımı denemek istiyorsanız, lütfen kontrol edin Concur Labs demo sayfası (bert.concurlabs.com), duygu sınıflandırma projemizin ilgili görüntüleri var.

Sunum hakkında bir not

Bu makalede anlatılan yöntemler, geliştiricilerin TensorFlow modellerini eğitmek için TensorFlow Extended (TFX) v0.21 veya sonraki bir sürümünü kullanmalarına olanak tanır. Ancak, TensorFlow Serving'in (v2.1) mevcut sürümü, eğitilmiş modelde bulunan tf.text operatörü için henüz destek içermemektedir ve bu tür bir destek, Nightly docker sürümüne ve v2.2 sürümüne dahil edilecektir.

Kodu doğrudan görüntülemek ister misiniz?

Tam örneğe gitmek istiyorsanız, kontrol edin Colab not defteri , Konuşlandırılabilir bir BERT modeli oluşturan eksiksiz bir TensorFlow Extended (TFX) işlem hattının ilgili bir görüntüsü vardır ve model hesaplama diyagramı ayrıca ön işleme adımlarını içerir.

  • Colab not defteri https://colab.sandbox.google.com/github/tensorflow/workshops/blob/master/blog/TFX_Pipeline_for_Bert_Preprocessing.ipynb

BERT dağıtımının durumu

Son zamanlarda, Transformer modelinin araştırma ilerlemesi çok hızlı. Maalesef, modeli üretimde kullanma süreci çok karmaşık ve sonuçlar tatmin edici değil. İdeal olarak, orijinal metni sunucuya göndereceğiz, ancak gerçek modelin tahminlerini alabilmemiz için BERT modelinin giriş metnini önceden işlemesi gerekir. Bazı mevcut çözümler, istemci tarafında metni önceden işleyerek bu sorunu çözmüş, diğer bazı çözümler ise sunucu tarafında ara adımlar gerçekleştirerek giriş verilerini işlemiştir. Bu yaklaşımların her ikisi de, ek dağıtım koordinasyonu gerektirdiğinden (istemci / sunucu geçişi sırasında olduğu gibi) veya çıkarım verimliliğini azalttığından (örneğin, ara dönüşüm adımları için karmaşık tahmin toplu işleme yeteneklerine duyulan ihtiyaç) uygun değildir.

Şekil 1: Mevcut BERT dağıtımı

İdeal dağıtım nedir?

Dağıtım modeli söz konusu olduğunda, ne kadar basitse o kadar iyidir. Transformer modelini devreye almak ve ön işlemeyi model hesaplama grafiğinin bir parçası olarak kullanmak istiyoruz. Ön işleme model hesaplama grafiğine entegre olduğundan, model sunucusuna yalnızca tek bir model dağıtabilir, diğer dağıtım bağımlılıklarını kaldırabilir (istemci veya ara işleme) ve ardından model sunucusunun avantajlarından (toplu tahmin istekleri gibi) tam anlamıyla faydalanabiliriz. Çıkarım donanımımızdan en iyi şekilde yararlanmak için).

BERT'i TensorFlow ekosistemi aracılığıyla dağıtın

TensorFlow, son derece verimli bir çerçevedir ve yalnızca bir makine öğrenimi çerçevesi değildir, aynı zamanda çeşitli destek paketleri ve araçları içeren geniş bir ekosistem sağlar. Bizim için yararlı olan araçlardan biri TensorFlow Sunumu . Bu araç, basit, tutarlı ve Ölçeklenebilir model dağıtımı .

  • TensorFlow Sunumu https://tensorflow.google.cn/tfx/guide/serving
  • Ölçeklenebilir model dağıtımı https://tensorflow.google.cn/tfx/serving/serving_kubernetes

Çok dikkat ettiğimiz bir diğer ekosistem projesi ise TensorFlow Dönüşümü . Bu araçla, hesaplamalı bir grafikte model ön işleme adımları oluşturabiliriz, böylece onu gerçek derin öğrenme modeliyle birlikte dışa aktarabiliriz.

  • TensorFlow Dönüşümü https://tensorflow.google.cn/tfx/guide/tft

TensorFlow Dönüşümü, tüm ön işleme adımlarının TensorFlow operatörleri olarak ifade edilmesini gerektirir. Yakın zamanda geliştirdiğimiz şey bu TensorFlow Metni Çok faydalı bir sebep. RaggedTensors Uygulama yalnızca yeni uygulamaları açmakla kalmaz, aynı zamanda kütüphane, doğal dil ön işleme adımlarını uygulamak için gereken işlevleri de sağlar.

  • RaggedTensors https://tensorflow.google.cn/guide/ragged_tensor

TensorFlowWorld 2019 TensorFlow Metninin yeni bir özelliği, BERT Tokenizer Tamamen uygulanmış. Bu nedenle, ön işleme adımlarımızı birkaç satır TensorFlow koduyla ifade edebiliriz. Tutarlı model ardışık düzeni ve dağıtım hedefimize ulaşmak için başka bir TensorFlow aracı da kullandık: TensorFlow Genişletilmiş (TFX) . TFX, replikasyon yoluyla eksiksiz makine öğrenimi hattını temsil etmemize olanak tanır ve böylece tutarlı bir makine öğrenimi modeli dağıtmamıza yardımcı olur.

  • TensorFlowWorld 2019 (Oynatma Listesi) https://v.youku.com/v_show/id_XNDQyMDUyNzE4OA
  • BERT Tokenizer https://github.com/tensorflow/text/blob/master/tensorflow_text/python/ops/bert_tokenizer.py#L121

Şekil 2: tf.Text kullanan TFX işlem hattı

TensorFlow operatörleri aracılığıyla ön işleme adımlarını yazın

İdeal model dağıtımı, ham metni modele girdi olarak kabul eder ve ardından model tahminleri sağlar. BERT dağıtımımızın bu kadar basit olmasının temel nedeni, ön işleme adımlarını TensorFlow operatörleri olarak ifade etmektir. BERT modeli, orijinal girdi metninin belirteç kimliğine, giriş maskesine ve oluşturulan girdi türü kimliğine girilmesini gerektirir. TensorFlow Text'in yardımıyla, artık daha az kod satırı ile tamamlayabiliyoruz. Bu makalenin ikinci bölümünde, orijinal metinden BERT'e özgü veri yapısına dönüştürmenin bazı ayrıntılarını tartışacağız, buna BERT'e özgü belirteç ekleme dahil.

vocab_file_path = load_bert_layer (). resolved_object.vocab_file.asset_path bert_tokenizer = text.BertTokenizer (vocab_lookup_table = kelime_dosyası_yolu, token_out_type = tf.int64, lower_case = do_lower_case) ... input_word_ids = tokenize_text (metin) input_mask = tf.cast (input_word_ids > 0, tf.int64) input_mask = tf.reshape (input_mask,) zeros_dims = tf.stack (tf.shape (input_mask)) input_type_ids = tf.fill (sıfır_dims, 0) input_type_ids = tf.cast (input_type_ids, tf.int64)

Şekil 3: BERT jetonlaştırıcı

TensorFlow Transform ve yukarıdaki kodu kullanarak, önceden işlenmiş hesaplama grafiği eğitimli TensorFlow modeliyle birlikte dışa aktarılabilir. TensorFlow Sunumunun en son güncellemesiyle, konuşlandırılmış BERT modelimiz artık ham metni girdi olarak kabul edebilir. Bak! Başka bağımlılık yok.

TensorFlow Transform'u kullanmak bize bazı somut faydalar sağlar. Bir yandan, veri ön işleme ve model mimarisi arasındaki sorumlulukları düzenli bir şekilde bölebiliriz. Öte yandan, çıktıları ön işleme için kolayca hata ayıklayabilir, test edebilir ve veri istatistikleri oluşturabiliriz. Dönüştürme bileşeni, kolay inceleme için dönüştürülmüş eğitim setini TFRecords biçiminde çıkarır. Dönüşüm çıktısında "hata ayıklama" işlemi sırasında, birkaç küçük sorun bulduk: Bu sorunlar model eğitiminin başarısız olmasına neden olmaz, ancak performansını etkileyebilir (belirteçteki bir kayma gibi). Teknik olarak, TensorFlow Transform burada gerekli değildir. Her örnek, tüm derlemeden bağımsız olarak önceden işlendiğinden, onu doğrudan model hesaplama grafiğine kolayca oluşturabiliriz. Ancak boru hattını bu şekilde oluşturmayı ve hatalarını ayıklamayı daha kolay bulduk.

Şekil 4: BERT katmanı

Uygulama süreci hakkında daha fazla bilgi edinmek istiyorsanız, uygulama sürecinin derinlemesine bir açıklamasını içeren makalenin ikinci bölümünü (henüz yayınlanmadı) okumanızı öneririz.

İdeal dağıtım nedir?

Basitleştirilmiş geliştirme

Çeşitli TensorFlow araçlarını kullanarak BERT modelini kısa ve öz bir şekilde dağıtabiliriz. Ön işleme adımlarını model hesaplama grafiğine entegre etmek, eğitim ve çıkarım verileri arasındaki bağlantının kesilmesi riskini azaltabilir. Konuşlandırılan model, başka herhangi bir istemci veya sunucu bağımlılığı gerektirmez, bu nedenle model hatası riskini daha da azaltır. BERT modelini TensorFlow Sunumu aracılığıyla tutarlı bir şekilde dağıtabiliriz ve aynı zamanda toplu çıkarım gibi model optimizasyonunu kullanabiliriz.

Çıkarım performansı

İlk performans testimiz umut vericiydi. Ön işleme adımlarıyla demo BERT modelinin hesaplama grafiğinden çıkarım yapın ve modelin her bir tahmini için ortalama süre yaklaşık 15,5 milisaniyedir (tek bir V100 GPU'ya, en fazla 128 jetona, gRPC taleplerine, optimize edilmemiş bir GPU TensorFlow Sunma derlemesine göre) Ve Kılıfsız Baz BERT modeli ölçümü). Bu, istemcide BERT girişi ve TensorFlow Sunumu tarafından barındırılan sınıflandırma modellerini kullanan önceki dağıtımların ortalama çıkarım süresiyle kabaca aynıdır. Elbette makinenize ve modelinize bağlı olarak sonuçlar farklı olacaktır.

Daha fazla bilgi

Uygulama süreci hakkında daha fazla bilgi edinmek istiyorsanız, makalenin ikinci bölümünü okumanızı öneririz. Kod hakkında daha fazla bilgi edinmek isterseniz lütfen Colab not defterini görüntüleyin , Duygu sınıflandırma modellerini uygulamak için önceden eğitilmiş BERT modellerini kullanma örnekleri içerir. Bir demo dağıtımı denemek istiyorsanız, lütfen kontrol edin Concur Labs demo sayfası , Duygu sınıflandırma projemizin ilgili görüntülerini içeren.

  • Colab https://colab.sandbox.google.com/github/tensorflow/workshops/blob/master/blog/TFX_Pipeline_for_Bert_Preprocessing.ipynb
  • Concur Labs demo sayfası https://bert.concurlabs.com/

TensorFlow Extended (TFX) ve TensorFlow Transform'un iç işleyişiyle ilgileniyorsanız, lütfen dikkatlice okuyun TFX Kullanım Kılavuzu Ve yakında çıkacak OReilly makalesine bakın " Makine öğrenimi ardışık düzenleri ve otomatikleştirilmiş model yaşam döngüleri oluşturmak için TensorFlow'u kullanın "(Building Machine Learning Pipeline, Automating Model Life Cycles with TensorFlow), önceden çevrimiçi olarak yayınlandı.

  • TFX Kullanım Kılavuzu https://tensorflow.google.cn/tfx/guide
  • Makine öğrenimi ardışık düzenleri ve otomatikleştirilmiş model yaşam döngüleri oluşturmak için TensorFlow'u kullanın

TFX hakkında daha fazla bilgi edinmek için lütfen kontrol edin Resmi internet sitesi (tensorflow.google.com), katıl TFX Tartışma Grubu , Kamuoyundaki diğer makaleleri dikkatlice inceleyin.

  • TFX Tartışma Grubu https://groups.google.com/a/tensorflow.org/forum/#!forum/tfx

Teşekkürler

Bu projenin sorunsuz gelişimi, Catherine Nelson, Richard Puckett, Jessica Park, Robert Reed ve Concur Labs ekiplerinin güçlü desteğinden ayrılamaz. Ayrıca Robby Neale, Robert Crowe, Irene Giannoumis, Terry Huang, Zohar Yahav, Konstantinos Katsiapis, Arno Eigenwillig ve TensorFlow ekibinin diğer üyelerine projenin uygulama ayrıntılarını tartışmaya ve TensorFlow kütüphanesine güncellemeler sağlamaya katıldıkları için teşekkür etmek istiyorum. Ayrıca, doğal dil işlemeyle ilgili tartışmalarda her zaman aydınlatıcı noktalara değinebilen Talenpair'den Cole Howard'a da özel teşekkürler.

-Bitiş-

Tsinghua-Qingdao Veri Bilimi Enstitüsü'nün resmi WeChat kamu platformunu takip edin " AI Veri Pastası "Ve kız kardeş numarası" Veri Pastası THU "Daha fazla ders avantajı ve kaliteli içerik elde edin.

BERT'li denetimsiz NER (kod ekli)
önceki
Makine öğreniminin ve derin öğrenmenin temeli atıldı, algoritma problemlerinin en hızlı şekilde nasıl çözüleceği
Sonraki
Makine öğrenimi ekonomik faydalar sağlıyor ve bir sonraki AI kışı asla gelmeyecek
Oyna Git çok kolay, AlphaZero kuantum hesaplama oynamaya başlıyor!
Milyar ölçekli bilgi grafiği eğitmek için yarım saat, temsil çerçevesini yerleştiren Amazon AI açık kaynak bilgi grafiği
Stanford'un akıllı tuvaleti, anal dövmesi olan kişileri tanıyabilir ve hem dışkı hem de idrar bilgilerinizi "satabilir"
Bilgi Grafiğine Dayalı Anlamsal Anlama Teknolojisi ve Uygulaması
Yeni Koronavirüs Görüntü Veri Analizi Kağıt Toplama (bağlantı ile)
Wei Chijian, yeni altyapı-Endüstriyel İnternet-Değer Küpü (PPT indirmeli) hakkında konuşuyor
Google'ın kendi geliştirdiği terminal AI çipi, önemli ilerlemeyi ortaya koyuyor ve cep telefonu dizüstü bilgisayarları için Samsung ile birlikte çalışıyor.
5G + AI çağında robotların dünyasını aydınlatın! Yedi temel teknoloji insan hayatını değiştiriyor
GitHub'ın temel işlevleri ücretsizdir ve dünya çapında 40 milyon geliştiriciye açıktır! Büyük AI modellerini rastgele yerleştirin
Yapay zeka ve insan zekası arasındaki rekabet: insan-makine karşı zeka teknolojisinin kapsamlı bir incelemesi
Python'da bir Gameboy emülatörü yazın ve AI modellerini eğitin!
To Top