Son yıllarda, doğal dil anlayışı (NLU), bulut tabanlı altyapının ölçeklenebilirliği ve maliyet etkinliğinin yanı sıra model iyileştirmeleriyle beslenen iş değerini giderek daha fazla bulmuştur. özellikle, Trafo genellikle şeklinde uygulanan derin öğrenme mimarisi Bert modelleri oldukça başarılı olmuştur, ancak bu modelleri eğitmek, ince ayar yapmak ve optimize etmek zorlu bir sorun olduğunu kanıtlamıştır. sayesinde AWS ve Hugging Face işbirliğiüzerinde NLU modellerini eğitmek ve optimize etmek artık daha kolay Amazon Adaçayı Yapıcı SageMaker Python SDK'yı kullanıyor, ancak bu modeller için etiketli verileri tedarik etmek hala zor ve zaman alıcı.
Belirli bir ticari ilgi alanı olan bir NLU sorunu, soru yanıtlama görevidir. Bu gönderide, kullanarak özel bir soru yanıtlama veri kümesinin nasıl oluşturulacağını gösteriyoruz. Amazon SageMaker Yer Gerçeği NLU modelini yanıtlayan bir Hugging Face sorusu eğitmek.
Soru cevaplama zorlukları
Soru cevaplama, cevabı içerebilecek veya içermeyebilecek bir metin gövdesi verilen bir sorguya otomatik olarak bir cevap üreten bir model gerektirir. Örneğin, "SageMaker Ground Truth hangi iş akışlarını destekler?" Bir model, aşağıdaki paragrafta “ek açıklama konsolidasyonu ve denetimi” bölümünü tanımlayabilmelidir:
SageMaker Ground Truth, açıklama konsolidasyonu ve denetim iş akışları aracılığıyla etiketlerin kalitesini artırmaya yardımcı olur. Açıklama birleştirme, iki veya daha fazla veri etiketleyiciden etiket girdileri toplama ve bunları makine öğrenimi modeliniz için tek bir veri etiketi oluşturmak üzere birleştirme işlemidir. Yerleşik denetim ve inceleme iş akışlarıyla, çalışanlar etiket doğrulaması yapabilir ve doğruluğu artırmak için ayarlamalar yapabilir.
Bu problem zordur, çünkü sadece anahtar kelime araması yapmaktan ziyade bir sorunun anlamını kavramak için bir model gerektirir. Bu alandaki doğru modeller, akıllı sohbet robotlarını güçlendirerek, yüksek kaliteli sesli asistan ürünleri sunarak ve kişiselleştirilmiş ürün soru yanıtlama yoluyla çevrimiçi mağaza gelirini artırarak müşteri destek maliyetlerini azaltabilir. Bu alandaki büyük bir veri kümesi, Stanford Soru Yanıtlama Veri Kümesi (SQuAD), kısa metin pasajları içeren bir model sunan ve modelin pasajdaki yanıtlayan metin aralığının konumunu tahmin etmesini gerektiren çeşitli bir soru yanıtlama veri kümesi. SQuAD, kalabalık işçiler tarafından bir dizi Wikipedia makalesinde sorulan, her sorunun cevabının ya ilgili pasajdan bir metin parçası olduğu ya da başka bir şekilde yanıtlanması imkansız olarak işaretlendiği sorulardan oluşan bir okuduğunu anlama veri setidir.
SQuAD'ı iş amaçlı kullanım örneklerine uyarlamanın bir zorluğu, etki alanına özgü özel veri kümeleri oluşturmaktır. Bu yeni soru ve yanıt veri kümeleri oluşturma süreci, açıklayıcıların aralıkları vurgulamasına ve bu alanlara soru eklemesine olanak tanıyan özel bir kullanıcı arabirimi gerektirir. Ayrıca, cevaplanamayan soruları içeren SQuAD 2.0 formatını desteklemek için imkansız soruların eklenmesini de destekleyebilmelidir. Bu imkansız sorular, modellerin, verilen pasaj kullanılarak hangi sorguların yanıtlanamayacağı konusunda ek anlayış kazanmasına yardımcı olur. bu özel çalışan şablonları Ground Truth'da, çalışanlara soru ve cevap veri kümeleri oluşturmak için özel bir açıklama deneyimi sağlayarak bu veri kümelerinin oluşturulmasını basitleştirin.
Çözüme genel bakış
Bu çözüm, özel bir açıklama kullanıcı arabirimi kullanarak etki alanına özgü özel bir soru-cevap veri kümesini etiketlemek için Temel Gerçeği etiketleme işlerini oluşturur ve yönetir. SageMaker'ı eğitmek, ince ayar yapmak, optimize etmek ve dağıtmak için kullanıyoruz. Hugging Face
Özel bir soru yanıtlama veri kümesinde PyTorch ile oluşturulmuş BERT modeli.
Sağlananları dağıtarak çözümü uygulayabilirsiniz. AWS CloudFormation AWS hesabınızdaki şablon. AWS CloudFormation, aşağıdakileri dağıtmayı yönetir: AWS Lambda açıklama kullanıcı arabirimi için açıklama öncesi ve açıklama birleştirmeyi destekleyen işlevler. Ayrıca bir oluşturur Amazon Basit Depolama Hizmeti (Amazon S3) kovası ve AWS Kimlik ve Erişim Yönetimi Bir etiketleme işi oluştururken kullanılacak (IAM) rolleri.
Bu gönderi, aşağıdakileri nasıl yapacağınız konusunda size yol gösterir:
- Kendi soru yanıt veri kümenizi oluşturun veya Temel Gerçeği kullanarak mevcut bir veri kümenizi artırın
- Metni birleştirmek ve simgeleştirmek için Hugging Face veri kümelerini kullanın
- SageMaker eğitimini kullanarak soru yanıtlama verilerinizde bir BERT modelinde ince ayar yapın
- Modelinizi bir SageMaker uç noktasına dağıtın ve sonuçlarınızı görselleştirin
Ek açıklama kullanıcı arayüzü
yeni kullanıyoruz özel çalışan görev şablonu Mevcut SQuAD veri setine yeni açıklamalar eklemek için Ground Truth ile. Bu çözüm, bir çalışan görev şablonunun yanı sıra açıklama öncesi Lambda işlevi (verileri kullanıcı arabirimine yerleştirmeyi yönetir) ve açıklama sonrası Lambda işlevi (etiketleme tamamlandıktan sonra kullanıcı arabiriminden sonuçları çıkaran) sunar.
Bu özel çalışan görev şablonu size sağ bölmede metni vurgulama ve ardından sol bölmede vurgulanan metinle ilgili ilgili bir soru ekleme olanağı sağlar. Sağ bölmede vurgulanan metin, önceden oluşturulmuş herhangi bir soruya da eklenebilir. Ayrıca, aşağıdakilere göre imkansız soruları ekleyebilirsiniz. TAKIM 2.0 biçim. İmkansız sorular, pasaj bir sorguyu yanıtlayamadığında modellerin güvenilmez yanlış pozitif tahminlerin sayısını azaltmasına izin verir.
Bu kullanıcı arabirimi, SQuAD 2.0 veri kümesiyle aynı JSON şemasını kullanır; bu, birden çok makale ve paragraf üzerinde çalışabileceği ve Önceki ve Sonraki düğmeler. Kullanıcı arabirimi, görev gönderme adımı sırasında her bir yorumlayıcının tamamlaması gereken etiketleme çalışmasını izlemeyi ve belirlemeyi kolaylaştırır.
Ek açıklama kullanıcı arabirimi tek bir Sıvı HTML dosyası, temel JavaScript bilgisi ile etiketleme deneyimini özelleştirebilirsiniz. Ayrıca değiştirebilirsiniz sıvı etiketleri etiketleme kullanıcı arabirimine ek bilgi iletmek için ve şablonun kendisini daha ayrıntılı çalışan talimatları içerecek şekilde değiştirebilirsiniz.
Varsayılan fiyatlar
Bu çözümü dağıtmak, insan etiketleme maliyetlerini hesaba katmadan, yaklaşık 20 ABD doları tutarında bir maksimum maliyete neden olabilir. Amazon S3, Lambda, SageMaker ve Ground Truth'un tümü şunları sunar: AWS Ücretsiz Katmanı, ek kullanım ücretleri ile. Daha fazla bilgi için aşağıdaki fiyatlandırma sayfalarına bakın:
- Amazon S3 Fiyatlandırması
- AWS Lambda Fiyatlandırması
- Amazon SageMaker Fiyatlandırması
- Amazon SageMaker Veri Etiketleme Fiyatlandırması – Bu ücret, kullandığınız iş gücünün türüne bağlıdır. Ground Truth'un yeni bir kullanıcısıysanız, etiketleme işi yapılandırmanızı test etmek için özel bir iş gücü kullanmanızı ve kendinizi bir çalışan olarak dahil etmenizi öneririz.
Önkoşullar
Bu çözümü uygulamak için aşağıdaki ön koşullara sahip olmalısınız:
- An AWS hesabı.
- Zemin Gerçeği ile aşinalık. Daha fazla bilgi için bkz. Verileri Etiketlemek için Amazon SageMaker Temel Gerçeği Kullanın.
- AWS CloudFormation'a aşinalık. Daha fazla bilgi için bkz. AWS CloudFormation Kullanım Kılavuzu.
- Bir SageMaker işgücü. Bu gösteri için özel bir iş gücü kullanıyoruz. SageMaker konsolunda bir iş gücü oluşturabilirsiniz.
Aşağıdaki GIF, özel bir işgücünün nasıl oluşturulacağını gösterir. Talimatlar için bkz. Etiketleme İş Gücü Sayfasını Kullanarak bir Amazon Cognito İş Gücü Oluşturun.
CloudFormation Yığını Başlatın
Artık çözümün yapısını gördüğünüze göre, örnek bir iş akışı çalıştırabilmeniz için onu hesabınıza dağıtın. Etiketleme ardışık düzeniyle ilgili tüm dağıtım adımları, AWS CloudFormation tarafından yönetilir. Bu, AWS CloudFormation'ın ön açıklama ve açıklama birleştirme Lambda işlevlerinizin yanı sıra giriş ve çıkış verilerini depolamak için bir S3 kovası oluşturduğu anlamına gelir.
Yığını AWS Bölgesinde başlatabilirsiniz us-east-1
kullanarak AWS CloudFormation konsolunda Yığını Başlat buton. Yığını farklı bir Bölgede başlatmak için, programın BENİOKU'sunda bulunan talimatları kullanın. GitHub deposu.
Dizüstü bilgisayarı çalıştırın
Çözüm, hesabınıza dağıtıldıktan sonra, adlı bir not defteri örneği gt-hf-squad-notebook
hesabınızda mevcuttur. Dizüstü bilgisayarı çalıştırmaya başlamak için aşağıdaki adımları tamamlayın:
- Amazon SageMaker konsolunda not defteri bulut sunucusu sayfasına gidin.
- Klinik JupyterLab'ı aç örneğini açmak için.
- Örneğin içinde, depoya göz atın
hf-gt-custom-qa
ve not defterini açhf_squad_finetuning.ipynb
. - Klinik
conda_pytorch_p38
senin çekirdeğin olarak.
Artık bir not defteri örneği oluşturduğunuza ve not defterini açtığınıza göre, çözümü çalıştırmak için not defterindeki hücreleri çalıştırabilirsiniz. Bu yazının geri kalanı, siz ilerledikçe not defterindeki her bölüm için ek ayrıntılar sağlar.
Verileri indirin ve inceleyin
The SQuAD veri kümesi bir eğitim veri kümesinin yanı sıra test ve geliştirme veri kümelerini içerir. Not defteri sizin için SQuAD2.0 veri kümesini indirir, ancak aşağıdaki not defteri hücresini değiştirerek hangi SQuAD sürümünün kullanılacağını seçebilirsiniz. Verileri indirin ve inceleyin.
SQuAD, Pranav Rajpurkar, Jian Zhang, Konstantin Lopyrev ve Percy Liang tarafından oluşturuldu. Daha fazla bilgi için bkz. orjinal kağıt ve veri kümesi. SQuAD, yazarlar tarafından aşağıdakiler kapsamında lisanslanmıştır: Creative Commons Atıf-ShareAlike 4.0 Uluslararası Kamu Lisansı.
SQuAD'dan örnek bir soru-cevap çiftine bakalım:
Paragraf başlığı: Immune_system
Bağışıklık sistemi, bir organizmayı hastalıklara karşı koruyan birçok biyolojik yapı ve süreçten oluşan bir sistemdir. Bir bağışıklık sisteminin düzgün çalışması için, virüslerden parazit solucanlara kadar patojenler olarak bilinen çok çeşitli ajanları algılaması ve bunları organizmanın kendi sağlıklı dokusundan ayırt etmesi gerekir. Birçok türde, bağışıklık sistemi, doğuştan gelen bağışıklık sistemine karşı adaptif bağışıklık sistemine veya hümoral bağışıklık ve hücre aracılı bağışıklık gibi alt sistemler olarak sınıflandırılabilir. İnsanlarda, kan-beyin bariyeri, kan-beyin omurilik sıvısı bariyeri ve benzeri sıvı-beyin bariyerleri, periferik bağışıklık sistemini beyni koruyan nöroimmün sistemden ayırır.
Soru: Bağışıklık sistemi organizmaları neye karşı korur?
cevap: hastalık
Yük modeli
Artık SQuAD'da örnek bir soru-cevap çiftini görüntülediğinize göre, soru yanıtlama için ince ayar yapabileceğiniz bir model indirebilirsiniz. Hugging Face, büyük ölçekli ön eğitimden geçmiş bir temel modeli kolayca indirmenize ve onu farklı bir aşağı akış görevi için yeniden başlatmanıza olanak tanır. Bu durumda, aşağıdakileri indirirsiniz: distilbert-base-uncased
kullanarak soru cevaplamak için modelleyin ve yeniden kullanın. AutoModelForQuestionAnswering
Hugging Face'den sınıf. Ayrıca AutoTokenizer
modelin önceden eğitilmiş belirtecini almak için sınıf. Yazının ilerleyen bölümlerinde kullanacağımız modelin derinliklerine dalıyoruz.
BERT girişini görüntüle
BERT, metin verilerini olarak bilinen sayısal bir temsile dönüştürmenizi gerektirir. token kazanabilirsiniz.. Mevcut çeşitli belirteçler vardır; aşağıdaki belirteçler, belirli bir sözlükle somutlaştırdığınız BERT için özel olarak tasarlanmış bir belirteç tarafından oluşturulmuştur. Her simge, kelime dağarcığındaki bir kelimeye eşlenir. Çıkarım için BERT sağladığınız dönüştürülmüş bağışıklık sistemi sorusuna ve bağlamına bakalım.
model çıkarımı
Artık BERT'nin girdi olarak ne aldığını gördüğünüze göre, modelden nasıl çıkarım sonuçları alabileceğinize bakalım. Aşağıdaki kod, önceden oluşturulmuş tokenleştirilmiş girdinin nasıl kullanılacağını ve modelden çıkarım sonuçlarının nasıl döndürüleceğini gösterir. BERT'nin ham metni girdi olarak kabul edememesine benzer şekilde, çıktı olarak da ham metin oluşturmaz. BERT'nin cevap olarak belirlediği paragraftaki başlangıç ve bitiş noktalarını belirleyerek BERT'nin çıktısını çevirirsiniz. Ardından, bu çıktıyı belirteçlerimizle eşleştirir ve İngilizce metne geri döndürürsünüz.
Çeviri sonuçları aşağıdaki gibidir:
Soru: Bağışıklık sistemi organizmaları neye karşı korur?
cevap: hastalık
ARTIRMA TAKIMI
Daha sonra, ek etiketli veriler elde etmek için bir özel çalışan görev şablonu Yer Gerçeği'nde. Önce SQuAD formatında yeni bir makale oluşturabiliriz. Not defteri bu dosyayı depodan Amazon S3'e kopyalar, ancak çalıştırmadan önce herhangi bir düzenleme yapmaktan çekinmeyin. ARTIRMA TAKIMI hücre. SQuAD formatı aşağıdaki kodda gösterilmiştir. Her SQuAD JSON dosyası, içinde depolanan birden çok makaleyi içerir. data
anahtar. Her makalenin bir title
alan ve bir veya daha fazla paragraf. Bu paragraflar, adı verilen metin bölümlerini içerir. context
ve ilgili tüm sorular qas
liste. Sıfırdan açıklama eklediğimiz için, qas
boş listeleyin ve sadece bağlam sağlayın. Kullanıcı arabirimi, her bir çalışan görevini istediğiniz kadar büyük veya küçük yapmanıza olanak tanıyarak hem paragraflar hem de makaleler arasında döngü yapabilir.
Örnek bir SQuAD veri dosyası oluşturduktan sonra bir Temel Gerçeği oluşturmamız gerekiyor. artırılmış bildirim dosyası bu bizim girdi verilerimizi ifade eder. Bunu, “ ile JSON satır formatlı bir dosya oluşturarak yapıyoruz.source
Amazon S3'te giriş SQuAD verilerimizi depoladığımız konuma karşılık gelen ” tuşu:
Etiketleme portalına erişin
İşi Ground Truth'a gönderdikten sonra, oluşturulan etiketleme işini Ground Truth konsolunda görüntüleyebilirsiniz.
Etiketleme gerçekleştirmek için ön koşul adımlarının bir parçası olarak oluşturduğunuz çalışan portalı hesabında oturum açmanız gerekir. İşiniz, birkaç dakikalık ön işlemeden sonra çalışan portalında mevcuttur. Görevi açtıktan sonra size Soru-Cevap ek açıklaması için özel çalışan şablonu sunulur. Metin bölümlerini bağlamda vurgulayarak ve ardından Soru ekle.
Etiketleme işi durumunu kontrol edin
Gönderdikten sonra, çalıştırabilirsiniz Etiketleme işi durumunu kontrol edin etiketleme işinizin tamamlanıp tamamlanmadığını görmek için hücreye dokunun. Diğer hücrelere geçmeden önce tamamlanmasını bekleyin.
Etiketli verileri yükle
Etiketlemeden sonra çıktı bildirimi, etiket öznitelik adınızla (bu durumda squad-1626282229
) eğitim sırasında kullanabileceğiniz bir S3 URI - SQuAD formatlı veri içerir. Aşağıdaki çıktı bildirim içeriğine bakın:
Bildirimdeki her satır, tek bir çalışan görevine karşılık gelir.
SQuAD tren setini yükle
Hugging Face'in bir veri kümesi paketi bu size SQuAD'ı indirme ve ön işleme olanağı sağlar, ancak özel sorularımızı ve yanıtlarımızı eklemek için biraz işlem yapmamız gerekir. SQuAD, konu kümeleri etrafında yapılandırılmıştır. Her konunun çeşitli farklı bağlam ifadeleri vardır ve her bağlam ifadesinin soru-cevap çiftleri vardır. Eğitim için kendi sorularımızı oluşturmak istediğimiz için sorularımızı SQuAD ile birleştirmemiz gerekiyor. Neyse ki bizim için ek açıklamalarımız zaten SQuAD biçimindedir, bu nedenle örnek etiketlerimizi alabilir ve bunları mevcut SQuAD verilerine yeni bir konu olarak ekleyebiliriz.
Sarılma Yüz Veri Kümesi nesnesi oluşturun
Verilerimizi Hugging Face'in veri seti formatına sokmak için birkaç seçeneğimiz var. kullanabiliriz load_dataset seçeneği, bu durumda bir veri kümesi nesnesi olarak yüklenen bir CSV, JSON veya metin dosyası sağlayabiliriz. Ayrıca tedarik edebilirsiniz load_dataset
dosyanızı istediğiniz biçime dönüştürmek için bir işleme komut dosyasıyla. Bu gönderi için bunun yerine Dataset.from_dict()
bir veri kümesi nesnesi oluşturmak için bir bellek içi sözlük sağlamamıza izin veren yöntem. Ayrıca veri seti özelliklerimizi de tanımlıyoruz. özelliklerini kullanarak görüntüleyebiliriz. Hugging Face'in veri seti görüntüleyicisi, aşağıdaki ekran görüntüsünde gösterildiği gibi.
Özelliklerimiz aşağıdaki gibidir:
- ID – Metnin kimliği
- başlık – Konuyla ilişkili başlık
- bağlam – Modelin bir cevap bulmak için araması gereken bağlam ifadesi
- soru – Modelin sorulmakta olduğu soru
- cevap – Kabul edilen cevap metni ve bağlam bildirimindeki konum
Hugging Face veri kümeleri, bu şemayı kolayca tanımlamamızı sağlar:
Veri kümesi nesnemizi oluşturduktan sonra, tokenize Metin. Modeller ham metni girdi olarak kabul edemediğinden, metnimizi onun anlayabileceği sayısal bir girdiye dönüştürmemiz gerekir; dizgeciklere. Belirteçleştirme modele özeldir, bu yüzden ince ayar yapacağımız modeli anlayalım. kullanıyoruz distilbert-baz-kasasız modeli. BERT'e çok benziyor: girdi yerleştirmelerini, çok kafalı dikkati kullanır (bu işlem hakkında daha fazla bilgi için bkz. Resimli Transformatör) ve ileri beslemeli katmanlardır, ancak orijinal BERT temel modelinin parametrelerinin yarısına sahiptir. Aşağıdaki ilk model katmanlarına bakın:
Model başlığının her bir bileşenini parçalayalım. İsim distilbert
adı verilen bir işlemle elde edilen BERT temel modelinin damıtılmış bir versiyonu olduğu gerçeğini belirtir. bilgi damıtma. Bilginin damıtılması, yalnızca eğitim verileri üzerinde değil, aynı zamanda daha büyük bir önceden eğitilmiş öğretmen modelinden aynı eğitim setine verilen yanıtlar üzerinde daha küçük bir öğrenci modelini eğitmemizi sağlar. base
modelin boyutunu ifade eder, bu durumda model bir BERT temel modelinden (BERT büyük modelinin aksine) damıtılmıştır. uncased
eğitim aldığı metne atıfta bulunur. Bu durumda metin, durumu hesaba katmadı; eğitim aldığı tüm metinler küçük harfliydi. bu uncased
yönü, metnimizi tokenleştirme şeklimizi doğrudan etkiler. Neyse ki, Hugging Face, transformatör modellerini indirmek için kolay erişim sağlamanın yanı sıra, modele eşlik eden belirteçleri de sağlar. Ayrıca bizim için özelleştirilmiş bir belirteç indirdik. distilbert-base-uncased model
şimdi metnimizi dönüştürmek için kullandığımız:
Dataset sınıfının bir diğer özelliği de map fonksiyonu ile paralel olarak ön işleme ve tokenizasyon yapmamızı sağlamasıdır. Bir işleme işlevi tanımlıyoruz ve ardından onu harita yöntemine aktarıyoruz.
Soru cevaplamak için Hugging Face'in birkaç bileşene ihtiyacı vardır (bunlar da sözlük):
- dikkat maskesi – Öncelikle gerçek metin ve dolgu belirteçleri arasında ayrım yapmak için kullanılan, modele hangi belirteçlerin dikkat edilmesi gerektiğini gösteren bir maske
- başlangıç_konumları – Metindeki cevabın başlangıç konumu
- bitiş_pozisyonları – Metindeki cevabın son konumu
- girdi_kimlikleri – Belirteçleri kelime dağarcığına eşleyen belirteç endeksleri
Belirteçleyicimiz metni belirtecek, ancak cevabımızın başlangıç ve bitiş konumlarını açıkça yakalamamız gerekiyor, bu yüzden özel bir ön işleme işlevi tanımladık. Artık girdilerimiz hazır olduğuna göre, eğitime başlayalım!
Eğitim işini başlat
Eğitimi defterimizde çalıştırabiliriz, ancak Soru-Cevap modelimizi makul bir sürede eğitmek için ihtiyaç duyduğumuz örnek türleri, p3 ve p4 örnekleri oldukça güçlüdür. Bu örnekler, bir dizüstü bilgisayarı çalıştırmak veya kalıcı olarak çalıştırmak için aşırıya kaçma eğilimindedir. Amazon Elastik Bilgi İşlem Bulutu (Amazon EC2) örneği. SageMaker eğitimi burada devreye girer. SageMaker eğitimi, yalnızca eğitim işi süresince geçerli olan belirli bir örnek veya örnekler üzerinde bir eğitim işi başlatmanıza olanak tanır. Bu, 4 NVIDIA A24 GPU'lu p8d.100xlarge gibi daha büyük örnekler üzerinde çalışmamızı sağlar, ancak kapatmayı unutmamız durumunda büyük bir faturaya neden olma endişesi duymadan. Ayrıca, aşağıdakiler gibi diğer SageMaker işlevlerine kolay erişim sağlar: SageMaker Deneyleri Makine öğrenimi eğitim çalışmalarınızı izlemek için ve SageMaker Hata Ayıklayıcı eğitim işlerinizi anlamak ve profil oluşturmak için.
Yerel eğitim
Hugging Face'de bir model eğitiminin yerel olarak nasıl çalıştığını anlayarak başlayalım, ardından onu SageMaker'da çalıştırmak için yaptığımız ayarlamaları gözden geçirelim.
Hugging Face, eğitmen sınıflarının kullanımıyla eğitimi kolaylaştırır. Eğitmen sınıfı, modelimizi, tren ve doğrulama veri kümelerimizi, hiperparametrelerimizi ve hatta belirteçlerimizi geçmemize izin verir. Modelimizin yanı sıra eğitim ve doğrulama setlerimize zaten sahip olduğumuz için, yalnızca hiperparametrelerimizi tanımlamamız gerekiyor. Bunu aracılığıyla yapabiliriz TrainingArguments
sınıf. Bu, öğrenme oranı, parti boyutu, dönem sayısı ve ağırlık azalması veya bir öğrenme oranı planlama stratejisi gibi daha derinlemesine parametreler gibi şeyleri belirlememize olanak tanır. tanımlarımızı yaptıktan sonra TrainingArguments
, eğitmen sınıfımızı somutlaştırmak için modelimizi, eğitim setimizi, doğrulama setimizi ve argümanlarımızı iletebiliriz. O zaman basitçe arayabiliriz trainer.train()
modelimizi eğitmeye başlamak için. Aşağıdaki kod bloğu, yerel eğitimin nasıl çalıştırılacağını gösterir:
Verileri S3'e gönder
Aynı şeyi SageMaker eğitiminde yapmak basittir. İlk adım, modelimizin erişebilmesi için verilerimizi Amazon S3'e yerleştirmektir. SageMaker eğitimi, bir veri kaynağı belirtmenize olanak tanır; Amazon S3 gibi kaynakları kullanabilirsiniz, Amazon Elastik Dosya Sistemi (Amazon EFS) veya Lustre için Amazon FSx yüksek performanslı veri alımı için. Bizim durumumuzda, artırılmış SQuAD veri kümemiz özellikle büyük değil, bu nedenle Amazon S3 iyi bir seçimdir. Eğitim verilerimizi Amazon S3'teki bir klasöre yüklüyoruz ve SageMaker eğitim örneğimizi başlattığında, belirtilen konumumuzdan verileri indiriyor.
Modeli somutlaştır
Eğitim işimizi başlatmak için, yerleşik Hugging Face tahmin edicisini kullanabiliriz. Adaçayı Yapıcı SDK'sı. SageMaker, bir eğitim işinin parametrelerini ve eğitim için kullanılacak örneklerin sayısını ve türünü tanımlamak için tahmin edici sınıfını kullanır. SageMaker eğitimi, Docker kapsayıcılarının kullanımı etrafında oluşturulmuştur. SageMaker'da varsayılan kapsayıcıları kullanabilir veya eğitim için kendi özel kapsayıcınızı sağlayabilirsiniz. Hugging Face modelleri söz konusu olduğunda, SageMaker, Hugging Face eğitim işlerini çalıştırmak için ihtiyaç duyduğunuz tüm bağımlılıkları içeren yerleşik Hugging Face kapsayıcılarına sahiptir. Tek yapmamız gereken, Hugging Face kapsayıcımızın giriş noktası olarak kullandığı eğitim komut dosyamızı tanımlamak.
Bu eğitim senaryosunda, giriş noktamıza bir dizi hiperparametre şeklinde ilettiğimiz argümanlarımızı ve eğitim kodumuzu tanımlıyoruz. Eğitim kodumuz, yerel olarak çalıştırıyormuşuz gibi aynı; basitçe kullanabiliriz TrainingArguments
ve sonra onları bir eğitmen nesnesine iletin. Tek fark, modelimizin içinde olması için çıktı konumunu belirtmemiz gerekiyor. /opt/ml/model
Böylece SageMaker eğitimi onu alabilir, paketleyebilir ve Amazon S3'e gönderebilir. Aşağıdaki kod bloğu, Hugging Face tahmincimizin nasıl başlatılacağını gösterir:
Modelde ince ayar yapın
Özel eğitim işimiz için 3.8 V4 GPU'dan oluşan bir p100xlarge örneği kullanıyoruz. Eğitmen sınıfı otomatik olarak çoklu GPU örneklerinde eğitimi destekler, bu nedenle bunu hesaba katmak için herhangi bir ek kuruluma ihtiyacımız yoktur. Modelimizi, parti boyutu 16 ve öğrenme oranı 4e5 olan iki dönem için eğitiyoruz. Ayrıca, modelimizin doğruluğunu etkilemeden sayısal kesinliği azaltabileceğimiz alanlarda karma kesinlik kullanan karma hassasiyet eğitimini de etkinleştiriyoruz. Bu, mevcut hafızamızı ve eğitim hızlarımızı arttırır. Eğitim işini başlatmak için, fit
bizim yöntemimizden huggingface_estimator
sınıf.
Modelimizin eğitimi bittiğinde, modeli yerel olarak indirebilir ve notebook'ta gösterilen test etmek için notebook'umuzun hafızasına yükleyebiliriz. SageMaker uç noktası olarak dağıtarak başka bir seçeneğe odaklanacağız!
Eğitilmiş modeli dağıtın
SageMaker, eğitim için yardımcı programlar sağlamanın yanı sıra, veri bilimcilerin ve makine öğrenimi mühendislerinin eğitimli modelleri için REST uç noktalarını kolayca dağıtmalarına da izin verebilir. SageMaker içinde veya dışında eğitilmiş modelleri dağıtabilirsiniz. Daha fazla bilgi için bkz. Amazon SageMaker'da bir Model Dağıtın.
Modelimiz SageMaker'da eğitildiğinden, uç nokta olarak dağıtmak için zaten doğru biçimdedir. Eğitime benzer şekilde, modeli, hizmet kodunu ve uç noktalar olarak dağıtmak istediğimiz örneklerin sayısını ve türünü tanımlayan bir SageMaker model sınıfı tanımlarız. Ayrıca eğitime benzer şekilde, hizmet verme Docker kapsayıcılarına dayalıdır ve yerleşik SageMaker kapsayıcılarından birini kullanabilir veya kendi kapsayıcımızı tedarik edebiliriz. Bu gönderi için yerleşik bir PyTorch hizmet kabı kullanıyoruz, bu nedenle uç noktamızı çalışır duruma getirmek için birkaç şey tanımlamamız yeterli. Sunum kodumuzun dört işleve ihtiyacı var:
- model_fn – Uç noktanın modeli nasıl yüklediğini tanımlar (bunu yalnızca bir kez yapar ve sonraki tahminler için bellekte tutar)
- girdi_fn – Girdinin nasıl seri durumdan çıkarılacağını ve işlendiğini tanımlar
- tahmin_fn – Modelimizin girdilerimiz hakkında nasıl tahminler yaptığını tanımlar
- çıktı_fn – Bitiş noktasının çıktı verilerini nasıl biçimlendirdiğini ve istekte bulunan istemciye nasıl geri gönderdiğini tanımlar
Bu işlevleri tanımladıktan sonra, uç noktamızı konuşlandırabilir ve ona bağlam ifadeleri ve soruları iletebilir ve tahmin edilen cevabını döndürebiliriz:
Model sonuçlarını görselleştirin
Bağlam ifadeleri göndermemize ve yanıtlar almamıza izin veren bir SageMaker uç noktası yerleştirdiğimiz için, modelimizin geçiş bağlamında ne bulduğunu daha iyi görselleştirmek için geri dönebilir ve orijinal SQuAD görüntüleyicide ortaya çıkan çıkarımları görselleştirebiliriz. Bunu, çıkarım sonuçlarını yeniden SQuAD biçimine yeniden biçimlendirerek ve ardından çalışan şablonundaki Liquid etiketlerini SQuAD biçimli JSON ile değiştirerek yaparız. Ardından, aşağıdaki ekran görüntüsünde gösterildiği gibi, sonuçları tek bir not defteri bağlamında yinelemeli olarak incelemek için, ortaya çıkan kullanıcı arayüzünü çalışan şablonumuz içinde çerçeveleyebiliriz. Soldaki her soru, sorguyla eşleşen sağdaki metin aralıklarını vurgulamak için tıklanabilir. Hiçbir soru seçilmediğinde, tüm metin alanları aşağıda gösterildiği gibi sağda vurgulanır.
Temizlemek
İleride tahsil edilmekten kaçınmak için, Temizlemek SageMaker uç noktaları, ham ve işlenmiş veri kümesini içeren S3 nesneleri ve CloudFormation yığını dahil tüm kaynakları silmek için not defterinin bölümü. Silme işlemi tamamlandığında, geçerli not defteri komut dosyasını barındıran not defteri örneğini durdurduğunuzdan ve sildiğinizden emin olun.
Sonuç
Bu gönderide, Ground Truth'u kullanarak kendi soru yanıtlama veri kümenizi nasıl oluşturacağınızı ve SageMaker kullanarak kendi soru yanıtlama modelinizi eğitmek ve dağıtmak için bunu SQuAD ile nasıl birleştireceğinizi öğrendiniz. Not defterini tamamladıktan sonra, özel Soru-Cevap veri kümeniz üzerinde eğitilmiş, konuşlandırılmış bir SageMaker uç noktanız olur. SageMaker uç noktaları standart REST API'leri aracılığıyla sağlandığından, bu uç nokta, üretim NLU iş akışlarınızla entegrasyon için hazırdır. Ayrıca, mevcut modelinizi yeniden eğitmenize veya diğer soru yanıtlama modeli mimarilerini eğitmeyi denemenize olanak tanıyan, SQuAD 2.0 biçiminde açıklamalı özel bir veri kümeniz de vardır. Son olarak, çalışan şablonunu yerel not defterinize yükleyerek çıkarımınızın sonuçlarını hızlı bir şekilde görselleştirecek bir mekanizmaya sahipsiniz.
Denemek defter, kendi sorularınızla zenginleştirin ve NLU kullanım durumlarınız için kendi özel soru yanıtlama modelinizi eğitin ve devreye alın!
Mutlu bina!
Yazarlar Hakkında
Jeremy Feltracco Amazon Web Services'ta Amazon ML Solutions Lab'de Yazılım Geliştirme Mühendisidir. AWS müşterilerinin yapay zekayı benimseme sürecini hızlandırmasına yardımcı olmak için bilgisayarla görme, robotik ve makine öğrenimindeki geçmişini kullanıyor.
Vidya Sagar Ravipati şirketinde yöneticidir Amazon ML Çözümleri Laboratuvarı, farklı sektör dikeylerindeki AWS müşterilerinin yapay zeka ve bulutu benimsemelerini hızlandırmalarına yardımcı olmak için büyük ölçekli dağıtılmış sistemlerdeki engin deneyiminden ve makine öğrenimine olan tutkusundan yararlanıyor. Daha önce, Amazon'da Bağlantı Hizmetlerinde kişiselleştirme ve kestirimci bakım platformları oluşturmaya yardımcı olan bir Makine Öğrenimi Mühendisiydi.
isaac özel Müşterilerin iş sorunlarını çözmek için ısmarlama makine öğrenimi ve derin öğrenme çözümleri geliştirdiği Amazon Makine Öğrenimi Çözümleri Laboratuvarı'nda Kıdemli Veri Bilimcisi olarak görev yapmaktadır. AWS müşterilerinin dağıtılmış eğitim ve aktif öğrenimle donatılmasına odaklanarak öncelikle bilgisayarla görme alanında çalışır.
- Akıllı para. Avrupa'nın En İyi Bitcoin ve Kripto Borsası.
- Plato blok zinciri. Web3 Metaverse Zekası. Bilgi Güçlendirildi. SERBEST ERİŞİM.
- KriptoHawk. Altcoin Radarı. Ücretsiz deneme.
- Kaynak: https://aws.amazon.com/blogs/machine-learning/build-a-custom-qa-dataset-using-amazon-sagemaker-ground-truth-to-train-a-hugging-face-qa- nlu-modeli/
- "
- &
- 000
- 10
- 100
- 116
- 28
- 39
- 3d
- 7
- 9
- Hakkımızda
- hızlandırmak
- erişim
- Göre
- Hesap
- muhasebe
- doğru
- karşısında
- aktif
- ilave
- Ek
- adres
- Benimseme
- ajanları
- AI
- Türkiye
- Izin
- zaten
- Amazon
- Amazon Web Servisleri
- miktar
- Başka
- cevap
- API'ler
- mimari
- ALAN
- argümanlar
- etrafında
- göre
- mal
- Asistan
- Dikkat
- denetim
- augmented
- Yazarlar
- Otomatik
- Otomatik
- mevcut
- AWS
- arka fon
- bariyer
- engelleri
- Başlangıç
- olmak
- altında
- Fatura
- Bit
- Engellemek
- vücut
- sınır
- inşa etmek
- yerleşik
- iş
- çağrı
- Alabilirsin
- ele geçirmek
- durumlarda
- meydan okuma
- zor
- yükler
- Klinik
- sınıf
- bulut
- kod
- Toplama
- bileşen
- hesaplamak
- bilgisayar
- yapılandırma
- Bağlantı
- konsolos
- sağlamlaştırma
- Konteyner
- Konteynerler
- içeren
- içindekiler
- müteahhitler
- uyan
- maliyetler
- yaratmak
- çevrimiçi kurslar düzenliyorlar.
- oluşturur
- Oluşturma
- akım
- görenek
- müşteri
- Kullanıcı Desteği
- Müşteriler
- veri
- veri bilimcisi
- derin
- teslim
- göstermek
- gösterdi
- bağlıdır
- dağıtmak
- konuşlandırılmış
- dağıtma
- açılma
- tasarlanmış
- detaylı
- ayrıntılar
- Belirlemek
- gelişme
- farklı
- zor
- direkt olarak
- Hastalık
- dağıtıldı
- liman işçisi
- Değil
- aşağı
- indir
- indirme
- sürme
- sırasında
- kolayca
- etkinleştirme
- Son nokta
- mühendis
- Mühendisler
- İngilizce
- değerlendirme
- örnek
- mevcut
- deneyim
- Hulasa
- Yüz
- Özellikler(Hazırlık aşamasında)
- Özellikler
- Nihayet
- Ad
- odak
- odaklanma
- takip etme
- Airdrop Formu
- biçim
- ileri
- bulundu
- Ücretsiz
- işlev
- daha fazla
- gelecek
- oluşturmak
- üreten
- nesil
- GitHub
- gidiş
- Tercih Etmenizin
- yardım et
- yardımcı olur
- Yüksek kaliteli
- Vurgulamak
- Vurgulanan
- büyük ölçüde
- hosting
- Ne kadar
- Nasıl Yapılır
- HTTPS
- Kocaman
- insan
- İnsanlar
- Yüzlerce
- belirlemek
- belirlenmesi
- Kimlik
- görüntü
- uygulamak
- uygulanan
- imkânsız
- iyileştirmek
- A.Ş.
- dahil
- içerir
- Dahil olmak üzere
- giderek
- sanayi
- bilgi
- Altyapı
- giriş
- bütünleşme
- Akıllı
- faiz
- arayüzey
- Uluslararası
- sezgisel
- IT
- kendisi
- JavaScript
- İş
- Mesleki Öğretiler
- anahtar
- bilgi
- bilinen
- laboratuvar
- etiketleme
- Etiketler
- dil
- büyük
- büyük
- başlatmak
- öğrendim
- öğrenme
- Ayrılmak
- leverages
- ruhsatlı
- Muhtemelen
- çizgi
- Sıvı
- Liste
- yük
- yükleme
- yerel
- lokal olarak
- yer
- makine
- makine öğrenme
- YAPAR
- Yapımı
- yönetilen
- müdür
- harita
- haritalama
- Haritalar
- Pazarlama
- maske
- uygun
- anlam
- anlamına geliyor
- Bellek
- karışık
- ML
- model
- modelleri
- izlemek
- Daha
- çoğu
- çoklu
- Doğal (Madenden)
- defter
- numara
- elde
- teklif
- Teklifler
- Online
- açık
- açma
- işletmek
- işletme
- operasyon
- optimize
- optimize
- seçenek
- Opsiyonlar
- sipariş
- kuruluşlar
- Diğer
- aksi takdirde
- kendi
- Bölüm
- belirli
- özellikle
- icra
- Kişiselleştirme
- Platformlar
- Nokta
- noktaları
- Portal
- pozisyon
- pozitif
- güçlü
- tahmin
- Tahminler
- fiyatlandırma
- özel
- Sorun
- sorunlar
- süreç
- Süreçler
- işleme
- PLATFORM
- üretim
- Ürünler
- profilleme
- sağlamak
- sağlar
- sağlama
- halka açık
- Soru-Cevap
- kalite
- soru
- hızla
- Çiğ
- Okuma
- makul
- teslim almak
- azaltmak
- Depo
- temsil
- Kaynaklar
- DİNLENME
- Sonuçlar
- dönüş
- gelir
- yorum
- robotik
- yuvarlak
- koşmak
- koşu
- ölçeklenebilirlik
- bilim adamı
- bilim adamları
- sdk
- Ara
- güvenlik
- bölüm
- bölünme
- segmentler
- seçilmiş
- Hizmetler
- servis
- set
- kurulum
- kısa
- gösterilen
- benzer
- Basit
- beden
- becerileri
- küçük
- So
- Yazılım
- yazılım geliştirme
- katı
- çözüm
- Çözümler
- biraz
- uzay
- özel
- özel
- özellikle
- yığın
- standart
- başlama
- Açıklama
- ifadeleri
- hafızası
- mağaza
- Stratejileri
- yapılandırılmış
- Öğrenci
- başarılı
- arz
- destek
- Destekler
- sistem
- Sistemler
- görevleri
- test
- İçinden
- zaman
- zaman tükeniyor
- Başlık
- simge
- dizgeciklere
- simgeleþtirilmiþ
- Jeton
- Konular
- meşale
- Takip
- Eğitim
- Dönüştürmek
- türleri
- ui
- anlamak
- anlayış
- us
- kullanım
- kullanmak
- onaylama
- değer
- çeşitlilik
- satıcıları
- Doğrulama
- Karşı
- sektörler
- Video
- Görüntüle
- virüsler
- vizyonumuz
- ses
- beklemek
- ağ
- web hizmetleri
- Ne
- süre
- DSÖ
- Vikipedi
- içinde
- olmadan
- İş
- işçiler
- işgücü
- çalışır
- kurt
- yıl