[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:ml-engineer\u002Fti-cluster-scheduling-resources":4,"config":212},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":9,"spec_key":7,"spec_name":7,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":112,"samples":126},"ml-engineer","ML Engineer","","ti-cluster-scheduling-resources","Ti Cluster Scheduling Resources","tr",75,2400,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,99,100,103,106,109],{"key":19,"name":20,"count":11},"cml-distance-clustering-dimreduction","Cml Distance Clustering Dimreduction",{"key":22,"name":23,"count":11},"cml-gradient-boosting-mechanics","Cml Gradient Boosting Mechanics",{"key":25,"name":26,"count":11},"cml-linear-logistic-internals","Cml Linear Logistic Internals",{"key":28,"name":29,"count":11},"cml-probabilistic-models-calibration","Cml Probabilistic Models Calibration",{"key":31,"name":32,"count":11},"cml-svm-kernels-margins","Cml Svm Kernels Margins",{"key":34,"name":35,"count":11},"cml-trees-randomforest-internals","Cml Trees Randomforest Internals",{"key":37,"name":38,"count":11},"dl-architecture-layers","Dl Architecture Layers",{"key":40,"name":41,"count":11},"dl-initialization-optimizers","Dl Initialization Optimizers",{"key":43,"name":44,"count":11},"dl-losses-output-layers","Dl Losses Output Layers",{"key":46,"name":47,"count":11},"dl-normalization-regularization","Dl Normalization Regularization",{"key":49,"name":50,"count":11},"dl-sequence-attention","Dl Sequence Attention",{"key":52,"name":53,"count":11},"dl-training-dynamics-backprop","Dl Training Dynamics Backprop",{"key":55,"name":56,"count":11},"fe-binning-discretization","Fe Binning Discretization",{"key":58,"name":59,"count":11},"fe-categorical-encoding-mechanics","Fe Categorical Encoding Mechanics",{"key":61,"name":62,"count":11},"fe-interactions-basis-expansion","Fe Interactions Basis Expansion",{"key":64,"name":65,"count":11},"fe-numeric-transforms-distributions","Fe Numeric Transforms Distributions",{"key":67,"name":68,"count":11},"fe-temporal-cyclical-features","Fe Temporal Cyclical Features",{"key":70,"name":71,"count":11},"fe-text-highcardinality-features","Fe Text Highcardinality Features",{"key":73,"name":74,"count":11},"ml-data-preparation","Ml Data Preparation",{"key":76,"name":77,"count":11},"ml-deployment-serving","Ml Deployment Serving",{"key":79,"name":80,"count":11},"ml-experimentation-reproducibility","Ml Experimentation Reproducibility",{"key":82,"name":83,"count":11},"ml-model-selection-tuning","Ml Model Selection Tuning",{"key":85,"name":86,"count":11},"ml-model-training-evaluation","Ml Model Training Evaluation",{"key":88,"name":89,"count":11},"ml-monitoring-drift","Ml Monitoring Drift",{"key":91,"name":92,"count":11},"ml-problem-framing","Ml Problem Framing",{"key":94,"name":95,"count":11},"ml-scaling-performance","Ml Scaling Performance",{"key":97,"name":98,"count":11},"ti-checkpointing-fault-tolerance","Ti Checkpointing Fault Tolerance",{"key":8,"name":9,"count":11},{"key":101,"name":102,"count":11},"ti-distributed-strategies-sync","Ti Distributed Strategies Sync",{"key":104,"name":105,"count":11},"ti-input-pipeline-throughput","Ti Input Pipeline Throughput",{"key":107,"name":108,"count":11},"ti-throughput-profiling-bottlenecks","Ti Throughput Profiling Bottlenecks",{"key":110,"name":111,"count":11},"ti-training-determinism-numerics","Ti Training Determinism Numerics",[113,117,120,123],{"key":114,"name":115,"count":116},"classical-ml","Classical ML",450,{"key":118,"name":119,"count":116},"deep-learning","Deep Learning",{"key":121,"name":122,"count":116},"feature-engineering","Feature Engineering",{"key":124,"name":125,"count":116},"training-infrastructure","Training Infrastructure",[127,145,159,173,186,199],{"id":128,"topic":9,"difficulty":129,"body":130,"options":131,"correct_key":142,"explanation":144},"01a05d13-8ca8-7c53-a13a-5dbc35c7ec82",1,"Bir eğitim işi, 8 GPU'yu gang (ya hep ya hiç) zamanlama ile istiyor: ya 8 rank'ın hepsi birlikte başlar ya da hiçbiri başlamaz. Kümede toplamda 8 GPU boş, ama bunlar 8 farklı düğümde düğüm başına yalnızca 1 boş GPU olacak şekilde dağılmış durumda; işin başlatma betiği ise 8 GPU'nun tek bir düğümde olmasını şart koşuyor. İşe ne olur?",[132,135,138,141],{"key":133,"text":134},"a","8 düğüm boyunca düğüm başına birer boş GPU kullanarak hemen başlar.",{"key":136,"text":137},"b","Şimdilik 7 GPU ile başlar, uygun olduğunda 8.'yi ekler.",{"key":139,"text":140},"c","Zamanlayıcı, önceden etiketlenmiş GPU düğümü olmadığı için işi iptal eder.",{"key":142,"text":143},"d","Beklemede kalır; tek-düğüm şartı için hiçbir düğümde 8 boş GPU yoktur.","Gang scheduling, kümedeki toplam boş sayıya değil işin fiili yerleşim şartına bakar; düğüm başına birer GPU'ya dağılmış 8 boş GPU, tek-düğüm isteyen 8-GPU'luk işi barındıramaz.",{"id":146,"topic":9,"difficulty":147,"body":148,"options":149,"correct_key":139,"explanation":158},"01a05d13-8cad-7c1a-8cae-3b3b9cc48c4e",3,"Bir kümede her biri 8 GPU'lu 10 düğüm var (toplam 80). Belirli bir anda 16 GPU boş, ama bunlar tam olarak 8 farklı düğümde düğüm başına 2 boş GPU olacak şekilde dağılmış. Beklemedeki bir iş tek bir düğümde 8 GPU istiyor (rank'ları hızlı düğüm-içi bağlantı kullanıyor ve düğümler arasına yayılamıyor). Daha sonra çalışan işler biter ve aynı 16 boş GPU yalnızca 2 düğümde düğüm başına 8 olacak şekilde toplanır. Beklemedeki iş için ne değişti?",[150,152,154,156],{"key":133,"text":151},"Hiçbir şey değişmedi; boş GPU sayısı her iki durumda da 16 kaldı.",{"key":136,"text":153},"Hâlâ başlayamaz; 2 düğüm birden fazla düğüme yayılan bir işi barındıramaz.",{"key":139,"text":155},"Artık başlayabilir, çünkü aynı boş kapasite artık yeterince büyük düğümlerde.",{"key":142,"text":157},"Zamanlayıcının GPU'ları serbest bırakmak için önce tüm işleri yeniden başlatması gerekir.","Tek-düğüm isteyen bir işin başlayıp başlayamayacağını yalnızca toplam boş sayı değil yerleşim belirler: 16 GPU sırf düzen değiştiği için kullanılamaz durumdan yeterli duruma geçti.",{"id":160,"topic":9,"difficulty":161,"body":162,"options":163,"correct_key":136,"explanation":172},"01a05d13-8cb0-7254-8c43-16a8b08d1659",2,"Bir kümenin gang scheduler'ı, aşağıdaki gibi bir spec ile tanımlanan grupları kabul ediyor.\n```yaml\napiVersion: scheduling.k8s.io\u002Fv1\nkind: PodGroup\nspec:\n  minMember: 8\n```\nBurada `minMember: 8` neyi zorunlu kılar?",[164,166,168,170],{"key":133,"text":165},"Pod'ları 8 tanesi başlayana kadar tek tek, sırayla başlatır.",{"key":136,"text":167},"Grup yalnızca en az 8 pod aynı anda yerleştirilebildiğinde başlar.",{"key":139,"text":169},"İş, ömrü boyunca en fazla 8 pod ile sınırlıdır.",{"key":142,"text":171},"Zamanlayıcı 8 fazladan boş pod'u tampon olarak ayırır.","`minMember`, eşzamanlı kabul için gang-scheduling eşiğidir; bir başlatma sırası kuralı, ömür boyu üst sınır ya da boş-tampon rezervasyonu değildir.",{"id":174,"topic":9,"difficulty":161,"body":175,"options":176,"correct_key":133,"explanation":185},"01a05d13-8cb3-72e0-adb8-04c04bbf44de","Bir kuyruk işleri geliş sırasına göre işliyor, ama küçük işler bittikçe kaynaklar yavaş yavaş boşalıyor. 32 GPU isteyen büyük bir iş saatlerdir kuyruğun başında bekliyor ve başlamıyor, çünkü sürekli gelen yeni 4-GPU'luk işler GPU'lar boşalır boşalmaz onları kapıyor. Bu örüntünün adı nedir ve bunu doğrudan çözen özellik hangisidir?",[177,179,181,183],{"key":133,"text":178},"Bu açlıktır; yeterli GPU biriktiğinde işin sırasını bir rezervasyon garanti eder.",{"key":136,"text":180},"Bu öncelik tersine dönmesidir; çözüm tüm işlere, geliş sırasından bağımsız, eşit öncelik vermektir, çünkü dengesizliği yaratan o farktır.",{"key":139,"text":182},"Bu thrashing'dir; çözüm kümedeki düğüm sayısını azaltmaktır.",{"key":142,"text":184},"Bu kilitlenmedir; çözüm işi daha az GPU isteğiyle, kuyruğa yeni bir kimlikle, yeniden göndermektir.","Büyük iş dairesel bir bağımlılık ya da kaynak salınımı yüzünden takılı değil, basitçe sırası hiç gelmiyor; garantili bir rezervasyon bunu doğrudan önler.",{"id":187,"topic":9,"difficulty":147,"body":188,"options":189,"correct_key":139,"explanation":198},"01a05d13-8cb6-7624-8614-f3a4b68b029d","Bir zamanlayıcı backfill kullanıyor: daha küçük bir iş, daha önce kuyruğa giren büyük bir işin önüne geçebilir, ama yalnızca bu, büyük işin olası en erken başlangıç zamanını geciktirmiyorsa. Büyük iş (önce kuyruğa girmiş, 16 GPU istiyor) 3 saat içinde yeterli GPU'ya kavuşacak şekilde projekte ediliyor. Yeni gönderilen küçük bir iş şu an boş olan 2 GPU istiyor ve tahmini çalışma süresi 2 saat. Backfill küçük işin şimdi çalışmasına izin verir mi?",[190,192,194,196],{"key":133,"text":191},"Hayır, backfill işleri yalnızca katı gönderim sırasına göre çalıştırır.",{"key":136,"text":193},"Hayır, backfill yalnızca aynı boyuttaki işlere uygulanır.",{"key":139,"text":195},"Evet; 2 saatlik çalışması büyük işin kaynaklara ihtiyaç duyduğu 3 saatlik noktadan önce biter.",{"key":142,"text":197},"Evet, ama yalnızca her seferinde bir yönetici onayıyla.","Backfill'in tüm amacı, öndeki işi kanıtlanabilir biçimde geciktirmediği sürece küçük işleri sıra dışı çalıştırmaktır; 2 saatlik bir işin sınırdan önce bitmesi bunu sağlar.",{"id":200,"topic":9,"difficulty":161,"body":201,"options":202,"correct_key":133,"explanation":211},"01a05d13-8cbc-73ad-be81-92a38f05fdc9","Bir iş toplam 8 GPU istiyor. Düzen 1, 8'inin de tek bir düğümde (hızlı düğüm-içi bağlantıyla bağlı) olmasını sağlıyor. Düzen 2, 4 ayrı düğümün her birine 2 GPU koyuyor (küme ağıyla bağlı, düğüm-içi bağlantıdan belirgin şekilde yavaş). Diğer her şey aynıyken, aynı senkron eğitim işini genelde hangisi daha hızlı bitirir ve neden?",[203,205,207,209],{"key":133,"text":204},"Düzen 1, çünkü senkronizasyon ağ yerine hızlı düğüm-içi bağlantıda kalır.",{"key":136,"text":206},"Düzen 2, çünkü GPU'ları düğümlere bölmek kullanılabilir bant genişliğini çoğaltır.",{"key":139,"text":208},"İkisi de aynı sürede biter; gang scheduling yalnızca rank'ların ne zaman başladığını belirler.",{"key":142,"text":210},"Düzen 2, çünkü daha fazla düğüm işe daha fazla CPU çekirdeği verir.","Darboğaz senkronizasyon için GPU'lar-arası bant genişliğidir; Düzen 1 bunu hızlı bağlantıda tutar, ne daha fazla düğüm ne de başlangıç zamanı bunu değiştirir.",{"fields":213,"seniorities":436,"interview_shapes":437,"locales":442,"oauth":444,"question_count":447,"coach_enabled":448,"jd_match_enabled":448},[214,239,259,275,299,312,331,350,372,391,406,428],{"key":215,"name_tr":216,"name_en":216,"sort":129,"specializations":217},"backend","Backend",[218,221,224,227,230,233,236],{"key":219,"name":220,"field":215},"general","Genel",{"key":222,"name":223,"field":215},"go","Go",{"key":225,"name":226,"field":215},"python","Python",{"key":228,"name":229,"field":215},"java","Java",{"key":231,"name":232,"field":215},"csharp","C#\u002F.NET",{"key":234,"name":235,"field":215},"nodejs","Node.js",{"key":237,"name":238,"field":215},"php","PHP",{"key":240,"name_tr":241,"name_en":241,"sort":161,"specializations":242},"frontend","Frontend",[243,244,247,250,253,256],{"key":219,"name":220,"field":240},{"key":245,"name":246,"field":240},"javascript","JavaScript",{"key":248,"name":249,"field":240},"typescript","TypeScript",{"key":251,"name":252,"field":240},"react","React",{"key":254,"name":255,"field":240},"vue","Vue",{"key":257,"name":258,"field":240},"angular","Angular",{"key":260,"name_tr":261,"name_en":261,"sort":147,"specializations":262},"fullstack","Fullstack",[263,264,265,266,267,268,269,270,271,272,273,274],{"key":219,"name":220,"field":260},{"key":222,"name":223,"field":215},{"key":225,"name":226,"field":215},{"key":228,"name":229,"field":215},{"key":231,"name":232,"field":215},{"key":234,"name":235,"field":215},{"key":237,"name":238,"field":215},{"key":245,"name":246,"field":240},{"key":248,"name":249,"field":240},{"key":251,"name":252,"field":240},{"key":254,"name":255,"field":240},{"key":257,"name":258,"field":240},{"key":276,"name_tr":277,"name_en":277,"sort":278,"specializations":279},"devops-cloud","DevOps \u002F Cloud",4,[280,281,284,287,290,293,296],{"key":219,"name":220,"field":276},{"key":282,"name":283,"field":276},"aws","AWS",{"key":285,"name":286,"field":276},"gcp","GCP",{"key":288,"name":289,"field":276},"azure","Azure",{"key":291,"name":292,"field":276},"kubernetes","Kubernetes",{"key":294,"name":295,"field":276},"terraform","Terraform",{"key":297,"name":298,"field":276},"linux","Linux",{"key":300,"name_tr":301,"name_en":301,"sort":302,"specializations":303},"ai-engineer","AI Engineer",5,[304,305,306,309],{"key":219,"name":220,"field":300},{"key":225,"name":226,"field":300},{"key":307,"name":308,"field":300},"llm-rag","LLM\u002FRAG",{"key":310,"name":311,"field":300},"mlops","MLOps",{"key":313,"name_tr":314,"name_en":315,"sort":316,"specializations":317},"database","Veritabanı","Database",6,[318,319,322,325,328],{"key":219,"name":220,"field":313},{"key":320,"name":321,"field":313},"postgresql","PostgreSQL",{"key":323,"name":324,"field":313},"mysql","MySQL",{"key":326,"name":327,"field":313},"mongodb","MongoDB",{"key":329,"name":330,"field":313},"redis","Redis",{"key":332,"name_tr":333,"name_en":334,"sort":335,"specializations":336},"mobile","Mobil","Mobile",7,[337,338,341,344,347],{"key":219,"name":220,"field":332},{"key":339,"name":340,"field":332},"ios-swift","iOS (Swift)",{"key":342,"name":343,"field":332},"android-kotlin","Android (Kotlin)",{"key":345,"name":346,"field":332},"flutter","Flutter",{"key":348,"name":349,"field":332},"react-native","React Native",{"key":351,"name_tr":352,"name_en":353,"sort":354,"specializations":355},"security","Güvenlik","Security",8,[356,357,360,363,366,369],{"key":219,"name":220,"field":351},{"key":358,"name":359,"field":351},"appsec","AppSec",{"key":361,"name":362,"field":351},"offensive-pentest","Offensive \u002F Pentest",{"key":364,"name":365,"field":351},"cloud-security","Cloud Security",{"key":367,"name":368,"field":351},"devsecops","DevSecOps",{"key":370,"name":371,"field":351},"blue-team-incident","Blue Team \u002F Incident",{"key":373,"name_tr":374,"name_en":375,"sort":376,"specializations":377},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[378,379,382,385,388],{"key":219,"name":220,"field":373},{"key":380,"name":381,"field":373},"test-automation","Test Automation",{"key":383,"name":384,"field":373},"sdet","SDET",{"key":386,"name":387,"field":373},"performance-testing","Performance Testing",{"key":389,"name":390,"field":373},"mobile-qa","Mobile QA",{"key":392,"name_tr":393,"name_en":393,"sort":394,"specializations":395},"data-engineer","Data Engineer",10,[396,397,400,403],{"key":219,"name":220,"field":392},{"key":398,"name":399,"field":392},"pipelines-etl","Pipelines \u002F ETL",{"key":401,"name":402,"field":392},"streaming","Streaming",{"key":404,"name":405,"field":392},"warehousing","Warehousing",{"key":407,"name_tr":408,"name_en":409,"sort":410,"specializations":411},"game-dev","Oyun Geliştirme","Game Development",11,[412,413,416,419,422,425],{"key":219,"name":220,"field":407},{"key":414,"name":415,"field":407},"unity-csharp","Unity (C#)",{"key":417,"name":418,"field":407},"unreal-cpp","Unreal (C++)",{"key":420,"name":421,"field":407},"gameplay","Gameplay",{"key":423,"name":424,"field":407},"graphics-rendering","Graphics \u002F Rendering",{"key":426,"name":427,"field":407},"multiplayer-netcode","Multiplayer \u002F Netcode",{"key":5,"name_tr":6,"name_en":6,"sort":429,"specializations":430},12,[431,432,433,434,435],{"key":219,"name":220,"field":5},{"key":114,"name":115,"field":5},{"key":121,"name":122,"field":5},{"key":118,"name":119,"field":5},{"key":124,"name":125,"field":5},[14,15,16],{"junior":438,"mid":440,"senior":441},{"questions":439,"median_sec":3},20,{"questions":439,"median_sec":3},{"questions":439,"median_sec":3},[10,443],"en",[445,446],"google","github",28950,true]