yoklateknik mülakat

ML Engineer Ti Input Pipeline Throughput Mülakat Soruları

75 doğrulanmış ML Engineer Ti Input Pipeline Throughput mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

Ti Input Pipeline ThroughputZorluk 1
Bir veri kümesi 100 shard dosyası olarak saklanıyor. Eğitim işi 8 rank üzerinde koşuyor ve her rank başlangıçta shard listesinden ardışık bir dilim alıyor. 100, 8'e tam bölünmediği için her rank'ta kaç shard kaldığını gözlemlediğinde ne görürsün?
  • aÇoğu rank 12 shard, birkaç rank 13 shard alır. Artan shard'lar rank başına birer birer dağıtıldığı için shard sayısı rank'lar arasında en fazla bir fark eder.
  • b8 rank'ın hepsi tam olarak 12 shard alır ve kalan 4 shard o epoch'ta hiç kimse tarafından okunmaz.
  • cİş hiç başlamaz: shard çerçevesi eşit olmayan bir bölünmeyi ölümcül bir yapılandırma hatası sayar.
  • dBir rank 100 shard'ın tamamını diğerleri adına okur, ardından çözülmüş örnekleri ağ üzerinden yayınlar.
Açıklama:Standart ardışık bölme, her rank'a 100 // 8 = 12 shard verir, kalan 100 % 8 = 4 shard'ı da ilk dört rank'a birer birer dağıtır; böylece sayılar 12 ya da 13'te kalır — hiçbir zaman bir shard'dan fazla fark oluşmaz. Eşit olmayan bölünme işi durdurmaz, hiçbir shard sessizce atlanmaz ve tek-rank'ın okuyup yayınladığı bir adım yoktur.
Ti Input Pipeline ThroughputZorluk 2
Bir ekip 17 shard dosyasını 4 rank arasında ardışık olarak bölüştürüyor. Rank 0'a 5 shard, rank 1, 2 ve 3'e ise 4'er shard düşüyor. Shard boyutları kabaca eşitse, bu en doğrudan olarak neye yol açar?
  • aRank 0, o epoch'ta diğerlerinden daha fazla yerel adım atar.
  • bPratikte ölçülebilir hiçbir şey olmaz, çünkü 5 ile 4 arasındaki bir shard'lık fark, shard boyutu ne olursa olsun herhangi bir rank'ın attığı yerel adım sayısını değiştirmek için her zaman çok küçüktür.
  • cRank 0 başlangıçta çöker, çünkü çoğu shard tabanlı yükleyici, akranlarından farklı bir shard sayısı almayı geçersiz bir atama sayar.
  • dRank 0'a atanan fazladan shard otomatik olarak tespit edilir ve epoch ortasında sessizce, yerel verisi ilk biten rank'a yeniden atanır; böylece her rank'ın adım sayısı eşit kalır.
Açıklama:Bir shard'lık fazladan örnekle rank 0'ın yerel verisi rank 1-3'ten kesinlikle daha fazladır; her rank'ın kendi verisi bitene kadar dönmesi, rank 0'ın veri bitmeden önce daha fazla adım atması demektir. Fark varsayılan olarak önemsiz değildir, uyuşmayan bir sayı hiçbir şeyi çökertmez ve hiçbir shard epoch ortasında sessizce yeniden dengelenmez.
Ti Input Pipeline ThroughputZorluk 2
Shard sayısı rank sayısına tam bölünmediğinde rank'lara eşit olmayan shard sayısı vermemek için yaygın bir çözüm, shard listesini pad'lemektir: toplam rank sayısına bölünene kadar birkaç shard'ı (tipik olarak listenin başından alınarak) tekrarlamak. Tekrarlanan bir shard alan rank'lar için bunun doğrudan sonucu nedir?
  • aO shard'ın örneklerini epoch içinde bir kez daha okurlar; yani veri kümesindeki az sayıda örnek birden fazla görülmüş olur.
  • bPad'lenen shard'ı tıpkı diğer her shard gibi yalnızca bir kez okurlar, çünkü pad'leme yalnızca bir shard'ın hangi rank'a ait olduğunu değiştirir, kaç kez okunacağını değil.
  • cO shard'ı tamamen atlarlar, çünkü pad'lenen (tekrarlanan) shard'lar işaretlenir ve örnek sayısını tam tutmak için gerçek okumadan hariç tutulur.
  • dTekrarlanan shard'ın yerine boş (tümü sıfır) örneklerden oluşan bir yer tutucu okurlar; böylece gerçek veri çoğaltılmamış olur.
Açıklama:Pad'leme, toplam sayı tam bölünene kadar atama listesindeki bazı shard girdilerini gerçekten çoğaltarak çalışır; bu çoğaltılmış girdileri alan rank'lar hangileriyse, o epoch'ta o shard'ın örneklerini bir kez daha okur. Normal bir shard gibi yalnızca bir kez okunmaz, atlanmaz ve gerçek veri yerine boş yer tutucu veriyle değiştirilmez — gerçek örnekler fiilen tekrarlanır.
Ti Input Pipeline ThroughputZorluk 1
Bir streaming veri yükleyici sabit boyutlu bir shuffle buffer tutuyor: buffer'ı akıştaki sonraki N örnekle dolduruyor, ardından her örnek vereceğinde buffer'dan rastgele birini seçip yerine bir sonraki okunmamış örneği koyuyor. Tüm veri kümesinin gerçek küresel karıştırılmasıyla karşılaştırıldığında, bu buffer tabanlı yaklaşım sana ne verir?
  • aN en az 2 olduğu sürece küresel bir karıştırmayla tamamen aynı çıktı sırası, çünkü sıfırdan büyük herhangi bir buffer boyutu tüm akışı bir kerede karıştırmaya matematiksel olarak eşdeğerdir.
  • bTamamen sıralı, karıştırılmamış bir sıra, çünkü buffer yalnızca sabit bir ileri-bakış penceresi tutar ve öğeleri doldurduğu sırayla baştan sona aynı sırada boşaltır; pencere içindeki öğeler yer değiştirmez.
  • cYaklaşık, yerel bir karıştırma: bir örnek yalnızca orijinal konumuna kabaca N kadar yakın bir konuma taşınabilir ve genel olarak gerçek küresel karıştırmadan daha zayıf kalır.
  • dÖrnekleri yalnızca ilk buffer-dolusu içinde yeniden sıralayan, ondan sonraki akışın geri kalanını tamamen orijinal sırasında bırakan bir karıştırma.
Açıklama:Bir örnek, buffer'a girip en fazla N öğe arasındayken çıkabildiğinden, çıktı konumu kabaca buffer boyutuyla orijinal konumuna göre sınırlıdır — bu, gerçek küresele eşdeğer olmayan, yerel ve yaklaşık bir karıştırmadır. N ne olursa olsun küresel karıştırmaya eşdeğer değildir, sıra kelimenin tam anlamıyla karıştırılmamış değildir ve yeniden sıralama (sınırlı bir pencere içinde) akış boyunca sürer, yalnızca ilk buffer-dolusuyla sınırlı değildir.
Ti Input Pipeline ThroughputZorluk 2
Bir veri kümesinin shard dosyaları sınıf etiketine göre sırayla yazılmış: ilk shard'lar yalnızca sınıf 0 içeriyor, sonrakiler yalnızca sınıf 1, ve böyle devam ediyor. 200 örnek tutan bir shuffle buffer kullanılıyor ve her sınıf bloğu 1000 örnekten oluşuyor. Bir sınıf bloğunun erken kısmında çekilen batch'lerin nasıl göründüğünü beklersin?
  • aSınıflar arasında hiçbir batch'te sınıfa-göre-sıralı dosya düzeninin artık görünmeyeceği kadar dengeli, çünkü 200 örneklik bir buffer orijinal sırayı gizlemeye yetecek kadar bir sonraki bloktan zaten karışım almıştır.
  • bO anda okunan bloğun sınıfı tarafından ağır biçimde domine edilmiş.
  • cO anda hangi blok okunuyor olursa olsun, genel dosya sırasında en son görünen sınıf tarafından domine edilmiş.
  • dAynı 10.000 örneklik veri kümesinin gerçek küresel karıştırmasından çekilen batch'lerle istatistiksel olarak özdeş, çünkü buffer ne kadar küçük olursa olsun yazım sırasına olan bağımlılığı yine de ortadan kaldırır.
Açıklama:1000 örneklik aynı-sınıf bloğunun içinde oturan 200'lük bir buffer, neredeyse tamamen o tek sınıfla dolar; bu yüzden buffer bir sonraki bloktan doldurulmaya başlayana kadar ondan çekilen batch'ler o sınıfa ağır biçimde kayar. Bloktan çok daha küçük bir buffer, sınıfa-göre-sıralı düzeni gizleyemez, alakasız bir 'son' sınıf tarafından domine edilmemiştir ve açıkça gerçek küresel karıştırmadan farklıdır.
Ti Input Pipeline ThroughputZorluk 3
# akış sınıfa göre sıralı: [0]*1000 + [1]*1000 + ... + [9]*1000
def batch_majority_purity(shuffled, batch_size=32):
    # batch'in en çok bulunan sınıfa ait olan kısmı
    ...

Sınıfa göre sıralı bir akış için tam bir epoch boyunca batch_majority_purity'yi, buffer boyutu bir sınıf bloğuna (1000) eşitken ölçtüğünde ortalama saflık yaklaşık 0.55 çıkıyor; aynı verinin gerçek küresel karıştırmasında ise ortalama saflık yaklaşık 0.19. Bu ölçülen fark sana ne söylüyor?
  • aÖlçüm yanlış olmalı: bir sınıf bloğu kadar büyük herhangi bir shuffle buffer, küresel karıştırmanın saflığını tam olarak eşleştirmelidir.
  • bFark yalnızca 1000'den küçük buffer boyutlarında vardır; tam olarak 1000 örneklik bir buffer zaten küresel-karıştırma sayısını eşleştirmelidir.
  • cTam bir sınıf bloğu kadar büyük bir buffer bile batch'leri küresel karıştırmaya göre gözle görülür biçimde sınıfa-kaymış bırakıyor; bu da buffer boyutunun tek başına karıştırma kalitesini garanti etmediğini doğrular.
  • d0.19'luk küresel-karıştırma sayısının kendisi güvenilmez ve taraflı, dolayısıyla onu 0.55 ile karşılaştırarak gerçek bir sonuç çıkarılamaz.
Açıklama:Tam olarak bir sınıf bloğu boyutundaki bir buffer, çoğu zaman hâlâ aynı bloğun içinden yeniden doldurulur; bu yüzden 0.55, 0.19'luk küresel-karıştırma taban çizgisini eşleştirmek yerine onun epey üzerinde kalır — taban çizgisi düzeyinde bir saflığa ulaşmak, bloğa yalnızca eşit değil, onun birkaç katı büyüklükte bir buffer gerektirir. Burada bir ölçüm hatasına ya da güvenilmez bir taban çizgisine işaret eden hiçbir şey yok.

2400 soruluk ML Engineer bankasında kendini sına.

Mülakata başla