[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:ml-engineer\u002Fti-throughput-profiling-bottlenecks":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-throughput-profiling-bottlenecks","Ti Throughput Profiling Bottlenecks","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,102,105,108,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":100,"name":101,"count":11},"ti-cluster-scheduling-resources","Ti Cluster Scheduling Resources",{"key":103,"name":104,"count":11},"ti-distributed-strategies-sync","Ti Distributed Strategies Sync",{"key":106,"name":107,"count":11},"ti-input-pipeline-throughput","Ti Input Pipeline Throughput",{"key":8,"name":9,"count":11},{"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":139,"explanation":144},"01a05d13-8dd6-7da3-b6d8-546bb40dd82e",2,"Bir profiler tek bir eğitim adımını (birçok adımın ortalaması) fazlara ayırıyor:\n```\ninput_wait   : 2 ms\nforward      : 18 ms\nbackward     : 34 ms\ncollective    : 6 ms\noptimizer    : 4 ms\n-------------------\nstep total   : 64 ms\n```\nİlk optimizasyon denemesi için en iyi hedef hangi faz?",[132,135,138,141],{"key":133,"text":134},"a","input_wait, çünkü sıfırdan farklı her bekleme pipeline'ın GPU'yu aç bıraktığı anlamına gelir",{"key":136,"text":137},"b","collective, çünkü rank'lar arası iletişim senkron bir adımda gizli maliyete genelde hâkim olur",{"key":139,"text":140},"c","backward, çünkü açık ara en büyük faz",{"key":142,"text":143},"d","optimizer, çünkü 4 ms'lik payı saf yükten ibarettir ve yük gerçek hesaptan önce silinmelidir","backward (34 ms) adımın yarısından fazlasını oluşturuyor ve diğer tüm fazların toplamından bile büyük; oradaki sabit yüzdelik bir iyileştirme en büyük mutlak zaman kazancını verir. input_wait yalnızca 2 ms (darboğaz değil), collective burada mütevazı 6 ms, optimizer'ın 4 ms'i ise normal, 'saf yük' değil.",{"id":146,"topic":9,"difficulty":147,"body":148,"options":149,"correct_key":133,"explanation":158},"01a05d13-8dd9-72c3-9203-3ad954ed4905",1,"Adım başına zaman dökümünde (girdi bekleme, forward, backward, collective, optimizer, host yükü) hangi faz, sürecin bir sonraki batch hazır olana kadar durup beklediği süreyi temsil eder?",[150,152,154,156],{"key":133,"text":151},"girdi bekleme (input wait)",{"key":136,"text":153},"forward",{"key":139,"text":155},"collective",{"key":142,"text":157},"host yükü","input wait, eğitim döngüsünün veri hattının bir sonraki batch'i teslim etmesini beklerken bloke olduğu süre olarak tanımlanır. Forward ve collective aktif hesap\u002Filetişim fazlarıdır, host yükü ise CPU tarafındaki çağrı-dağıtım maliyetini ifade eder, veri beklemeyi değil.",{"id":160,"topic":9,"difficulty":161,"body":162,"options":163,"correct_key":142,"explanation":172},"01a05d13-8dda-75bc-a568-818df84e4b8d",3,"Aynı işten alınan iki profilli adım, global batch boyutu ve model değişmeden:\nAdım A: input_wait=1ms, forward=20ms, backward=38ms, collective=5ms, toplam=64ms.\nAdım B (500 adım sonra alınmış): input_wait=27ms, forward=20ms, backward=38ms, collective=5ms, toplam=90ms.\nForward, backward ve collective iki adım arasında değişmemiş. Adım B'nin 26ms daha yavaş olmasını en makul şekilde ne açıklar?",[164,166,168,170],{"key":133,"text":165},"iki adım arasında model büyümüş",{"key":136,"text":167},"collective, daha fazla rank katıldığı için yavaşlamış",{"key":139,"text":169},"optimizer daha maliyetli bir güncelleme kuralına geçmiş",{"key":142,"text":171},"veri hattı geride kalmış","Her hesap\u002Filetişim fazı (forward, backward, collective) A ve B arasında birebir aynı; yalnızca input_wait, neredeyse tam 26ms'lik farka eşit şekilde büyümüş. Bu, yavaşlamayı hesaba, iletişime ya da modelin değişmesine değil (bunlar forward\u002Fbackward'a yansırdı) veri hattının geride kalmasına işaret eder.",{"id":174,"topic":9,"difficulty":129,"body":175,"options":176,"correct_key":133,"explanation":185},"01a05d13-8ddc-76c8-8c9a-8d2346d9f71d","```python\ntimes = []\nfor i in range(10):\n    t0 = time.perf_counter()\n    loss = train_step(batch)\n    t1 = time.perf_counter()\n    times.append(t1 - t0)\nprint(sum(times) \u002F len(times))\n```\n`train_step`'in asenkron kernel'lar başlattığı ve onlar bitmeden döndüğü bir GPU'da, bu zamanlama kodunun asıl sorunu nedir?",[177,179,181,183],{"key":133,"text":178},"`t1`, kernel'lar bitmeden hemen başlatıldıkları anda yakalanıyor, bu yüzden süre gerçek işi az gösteriyor",{"key":136,"text":180},"`perf_counter()` tek bir adımı zamanlamak için yeterince hassas değildir",{"key":139,"text":182},"10 iterasyon herhangi bir ortalama hesaplamak için yeterli örnek değildir",{"key":142,"text":184},"döngü, GPU tarafından başlatılan kod için özel olarak tasarlanmış zamanlayıcı olan `time.time()`'a geçmelidir","GPU kernel çağrıları asenkrondur: kernel kuyruğa girer girmez Python çağrısı döner, kernel bitince değil. `t1`'den önce açık bir senkronizasyon noktası olmadan, duvar-saati farkı büyük ölçüde çağrı-dağıtım yükünü ölçer, gerçek hesap süresini değil. Diğer şıklar buradaki asıl kusur değildir.",{"id":187,"topic":9,"difficulty":129,"body":188,"options":189,"correct_key":133,"explanation":198},"01a05d13-8dde-7542-8ed9-014a5978dcaa","Bir ekip, kararlı-durum verimini tahmin etmek için taze bir sürecin ilk 5 eğitim adımını ölçüyor: [420ms, 38ms, 36ms, 37ms, 36ms]. Bu 5 sayının ortalamasını 'adım süresi' olarak kullanmaları hangi hatayı içerir?",[190,192,194,196],{"key":133,"text":191},"ilk adım tek seferlik ısınma maliyeti içerir, bu da ortalamayı yukarı çeker",{"key":136,"text":193},"5 örnek herhangi bir ortalama için istatistiksel olarak geçersiz bir örneklem boyutudur",{"key":139,"text":195},"ortalama yanlış özet istatistiktir, bunun yerine standart sapma raporlanmalıdır",{"key":142,"text":197},"adım süresi bir koşunun ömrü boyunca doğal olarak azalır, bu yüzden erken adımlar zaten anlamsızdır","420ms'lik ilk adım, tekrarlanmayan tek seferlik maliyetlerden (thread pool\u002Fallocator ısınması, kernel seçimi, JIT\u002Fautotune) kaynaklanan bir aykırı değerdir. Onu 5 örneklik ortalamaya dahil etmek, koşunun geri kalanında geçerli olacak kararlı-durum değerinin (~37ms) çok üzerine çeker.",{"id":200,"topic":9,"difficulty":161,"body":201,"options":202,"correct_key":139,"explanation":211},"01a05d13-8de0-70ef-b17a-164440b31571","30 ardışık adım süresi kaydedilmiş (ms), ilki tek seferlik ısınma aykırı değeri:\n```\n[178, 21, 20, 22, 21, 20, 21, 22, 21, 20,\n  21, 20, 22, 21, 20, 21, 22, 21, 20, 21,\n  22, 21, 20, 21, 22, 21, 20, 21, 22, 21]\n```\n30 değerin tamamı üzerinden ortalama ile medyan hesaplamanın etkisini aşağıdakilerden hangisi en iyi tanımlar?",[203,205,207,209],{"key":133,"text":204},"ortalama ve medyan neredeyse birebir aynı çıkar çünkü ikisi de tek bir aykırı değere eşit ölçüde duyarlıdır",{"key":136,"text":206},"medyan aykırı değer tarafından yukarı çekilir, ortalama ise tipik adım süresine yakın kalır",{"key":139,"text":208},"ortalama 178ms'lik aykırı değerle yukarı çekilir; medyan ~21ms civarında kalır",{"key":142,"text":210},"hiçbir istatistik etkilenmez, çünkü 30 değer içindeki tek bir aykırı değer önem taşımayacak kadar küçük bir orandır","30 değer arasındaki tek bir aykırı değer, ortalamayı kabaca (178-21)\u002F30 ≈ 5ms kaydırır — gerçek ve ölçülebilir bir şişme. Ortadaki sıralı değer olan medyan ise, tek bir uç değer olduğu sürece o değerin büyüklüğünden etkilenmez — tipik ~21ms'de kalır.",{"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":147,"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":129,"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":161,"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]