[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:ai-engineer\u002Faipy-tensor-ops-autograd":4,"config":193},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":97,"samples":108},"ai-engineer","AI Engineer","","aipy-tensor-ops-autograd","Aipy Tensor Ops Autograd","en",75,2025,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,55,58,61,64,67,70,73,76,79,82,85,88,91,94],{"key":19,"name":20,"count":11},"agents-tool-use","Agents Tool Use",{"key":22,"name":23,"count":11},"aimlops-deployment-strategies-ml","Aimlops Deployment Strategies Ml",{"key":25,"name":26,"count":11},"aimlops-experiment-tracking-reproducibility","Aimlops Experiment Tracking Reproducibility",{"key":28,"name":29,"count":11},"aimlops-feature-store-data-versioning","Aimlops Feature Store Data Versioning",{"key":31,"name":32,"count":11},"aimlops-ml-cicd-pipelines","Aimlops Ml Cicd Pipelines",{"key":34,"name":35,"count":11},"aimlops-model-monitoring-drift-detection","Aimlops Model Monitoring Drift Detection",{"key":37,"name":38,"count":11},"aimlops-model-versioning-registry","Aimlops Model Versioning Registry",{"key":40,"name":41,"count":11},"aipy-async-concurrency-ml-serving","Aipy Async Concurrency Ml Serving",{"key":43,"name":44,"count":11},"aipy-data-pipeline-dataloader","Aipy Data Pipeline Dataloader",{"key":46,"name":47,"count":11},"aipy-gpu-memory-management","Aipy Gpu Memory Management",{"key":49,"name":50,"count":11},"aipy-numpy-vectorization-broadcasting","Aipy Numpy Vectorization Broadcasting",{"key":52,"name":53,"count":11},"aipy-python-ml-packaging-environments","Aipy Python Ml Packaging Environments",{"key":8,"name":9,"count":11},{"key":56,"name":57,"count":11},"embeddings-vector-search","Embeddings Vector Search",{"key":59,"name":60,"count":11},"evaluation-testing","Evaluation Testing",{"key":62,"name":63,"count":11},"fine-tuning-adaptation","Fine Tuning Adaptation",{"key":65,"name":66,"count":11},"inference-serving","Inference Serving",{"key":68,"name":69,"count":11},"llm-fundamentals","Llm Fundamentals",{"key":71,"name":72,"count":11},"prompt-engineering","Prompt Engineering",{"key":74,"name":75,"count":11},"rag-chunking-indexing","Rag Chunking Indexing",{"key":77,"name":78,"count":11},"rag-embeddings-similarity","Rag Embeddings Similarity",{"key":80,"name":81,"count":11},"rag-evaluation","Rag Evaluation",{"key":83,"name":84,"count":11},"rag-generation-context","Rag Generation Context",{"key":86,"name":87,"count":11},"rag-reranking-fusion","Rag Reranking Fusion",{"key":89,"name":90,"count":11},"rag-retrieval","Rag Retrieval",{"key":92,"name":93,"count":11},"rag-retrieval-search","Rag Retrieval Search",{"key":95,"name":96,"count":11},"safety-guardrails","Safety Guardrails",[98,102,105],{"key":99,"name":100,"count":101},"llm-rag","LLM\u002FRAG",450,{"key":103,"name":104,"count":101},"mlops","MLOps",{"key":106,"name":107,"count":101},"python","Python",[109,127,140,153,167,180],{"id":110,"topic":9,"difficulty":111,"body":112,"options":113,"correct_key":115,"explanation":126},"019f9407-fdb7-7db8-a2fa-6fdf2a723d4d",1,"In a PyTorch-style tensor library, what is the 'computation graph' that autograd builds during the forward pass?",[114,117,120,123],{"key":115,"text":116},"a","A record of the operations run, used afterward to compute gradients via the chain rule.",{"key":118,"text":119},"b","A cache of previously computed gradients so repeated backward calls skip recomputation entirely.",{"key":121,"text":122},"c","A static schedule that decides which device (CPU or GPU) each operation runs on.",{"key":124,"text":125},"d","A compressed copy of the model's weights created before training starts.","Autograd records each differentiable operation as it runs (a directed graph of tensors and the functions that produced them), and backward() walks that graph applying the chain rule to compute gradients. (b) describes caching, not graph construction. (c) describes device placement\u002Fscheduling, unrelated to gradient tracking. (d) describes weight compression, which autograd does not perform.",{"id":128,"topic":9,"difficulty":111,"body":129,"options":130,"correct_key":118,"explanation":139},"019f9407-fdb9-73be-8eb1-4cf721f4fb67","When you create a new tensor directly from data (e.g., `torch.tensor([1.0, 2.0])`) without specifying anything else, what is the default value of `requires_grad`?",[131,133,135,137],{"key":115,"text":132},"True, since every floating-point tensor tracks gradients by default.",{"key":118,"text":134},"False, so the tensor does not participate in autograd unless requires_grad is set to True.",{"key":121,"text":136},"True only if the tensor has more than one element.",{"key":124,"text":138},"It depends on whether a GPU is available at tensor creation time.","Tensors created from plain data default to requires_grad=False; you must opt in explicitly (requires_grad=True at creation, or requires_grad_() afterward) to have that tensor tracked by autograd. (a) and (c) invent conditions that don't govern the default. (d) confuses device availability with the requires_grad default, which are unrelated.",{"id":141,"topic":9,"difficulty":111,"body":142,"options":143,"correct_key":121,"explanation":152},"019f9407-fdbb-7aba-9f05-c63da47a0a14","What is a 'leaf tensor' in an autograd computation graph?",[144,146,148,150],{"key":115,"text":145},"Any tensor produced as the final output of the loss function.",{"key":118,"text":147},"Any tensor that has been moved to a GPU device.",{"key":121,"text":149},"A tensor created directly by the user, not as the result of a tracked operation, such as a model parameter or input.",{"key":124,"text":151},"Any tensor whose value never changes during training.","Leaf tensors sit at the 'edges' of the graph: they were created directly by the user rather than produced by a tracked operation, and their .grad attribute is populated after backward() when requires_grad=True. Model parameters and directly created inputs are typical leaves. (a) describes the graph's root\u002Foutput, not a leaf. (b) confuses device placement with graph position. (d) describes constants, not the leaf concept specifically.",{"id":154,"topic":9,"difficulty":155,"body":156,"options":157,"correct_key":124,"explanation":166},"019f9407-fdbc-7548-bd1a-2dbbc4d96baa",2,"In a typical training loop, why must you call `optimizer.zero_grad()` (or `param.grad = None`) before each `loss.backward()` call?",[158,160,162,164],{"key":115,"text":159},"Because backward() overwrites .grad by default, so zero_grad() is only a defensive habit with no real effect.",{"key":118,"text":161},"Because forgetting it causes backward() to raise an exception immediately.",{"key":121,"text":163},"Because zero_grad() resets the model's weights to their initial values before the next step.",{"key":124,"text":165},"backward() accumulates gradients into .grad by adding to the existing value each time it runs.","Autograd accumulates: each backward() call adds newly computed gradients onto whatever is already in .grad, rather than replacing it. If you skip zero_grad(), gradients from earlier steps silently add into the current step's gradients, corrupting the update direction. (a) reverses the actual accumulation behavior. (b) is false — no exception is raised. (c) confuses gradient reset with weight reset, which zero_grad() does not do.",{"id":168,"topic":9,"difficulty":155,"body":169,"options":170,"correct_key":118,"explanation":179},"019f9407-fdbd-78dd-bd42-8abf3319f8ce","A leaf tensor `x` has `requires_grad=True` and starts with `x.grad = None`. You run `y = x**2` and call `y.backward()` twice in a row (without zero_grad in between, and with `retain_graph=True` passed to avoid the graph-freed error). If dy\u002Fdx at the current x gives grad value 6.0 each time it's computed, what is `x.grad` after the second `backward()` call?",[171,173,175,177],{"key":115,"text":172},"6.0, since .grad always stores only the most recent gradient contribution.",{"key":118,"text":174},"12.0, since each backward() call adds its computed gradient (6.0) onto the existing .grad value.",{"key":121,"text":176},"None, since calling backward() twice on the same graph clears .grad back to None.",{"key":124,"text":178},"0.0, since the two calls cancel each other out.","Gradient accumulation means .grad starts at None, becomes 6.0 after the first backward(), and becomes 6.0 + 6.0 = 12.0 after the second, confirmed by how the accumulation loop behaves. (a) ignores accumulation entirely. (c) and (d) describe behaviors the accumulation mechanism does not exhibit.",{"id":181,"topic":9,"difficulty":111,"body":182,"options":183,"correct_key":115,"explanation":192},"019f9407-fdbf-7bad-83e6-3735ed648915","What does `x.detach()` return, given a tensor `x` that requires grad?",[184,186,188,190],{"key":115,"text":185},"A new tensor sharing x's data but disconnected from the graph.",{"key":118,"text":187},"A deep copy of x with its own separate storage, still tracked by autograd.",{"key":121,"text":189},"The gradient of x with respect to the loss, computed immediately.",{"key":124,"text":191},"A tensor moved to CPU, regardless of which device x was on.","detach() gives you a view sharing x's storage, but it is cut off from the computation graph: it has requires_grad=False and no grad_fn, so operations on it won't be tracked and gradients won't flow back through it into x's graph. (b) wrongly claims a data copy and continued tracking. (c) confuses detaching with gradient computation. (d) confuses detach() with a device-transfer call like .cpu().",{"fields":194,"seniorities":372,"interview_shapes":373,"locales":378,"oauth":380,"question_count":383,"coach_enabled":384,"jd_match_enabled":384},[195,218,238,255,279,286,305,324,346,353,359,366],{"key":196,"name_tr":197,"name_en":197,"sort":111,"specializations":198},"backend","Backend",[199,202,205,206,209,212,215],{"key":200,"name":201,"field":196},"general","Genel",{"key":203,"name":204,"field":196},"go","Go",{"key":106,"name":107,"field":196},{"key":207,"name":208,"field":196},"java","Java",{"key":210,"name":211,"field":196},"csharp","C#\u002F.NET",{"key":213,"name":214,"field":196},"nodejs","Node.js",{"key":216,"name":217,"field":196},"php","PHP",{"key":219,"name_tr":220,"name_en":220,"sort":155,"specializations":221},"frontend","Frontend",[222,223,226,229,232,235],{"key":200,"name":201,"field":219},{"key":224,"name":225,"field":219},"javascript","JavaScript",{"key":227,"name":228,"field":219},"typescript","TypeScript",{"key":230,"name":231,"field":219},"react","React",{"key":233,"name":234,"field":219},"vue","Vue",{"key":236,"name":237,"field":219},"angular","Angular",{"key":239,"name_tr":240,"name_en":240,"sort":241,"specializations":242},"fullstack","Fullstack",3,[243,244,245,246,247,248,249,250,251,252,253,254],{"key":200,"name":201,"field":239},{"key":203,"name":204,"field":196},{"key":106,"name":107,"field":196},{"key":207,"name":208,"field":196},{"key":210,"name":211,"field":196},{"key":213,"name":214,"field":196},{"key":216,"name":217,"field":196},{"key":224,"name":225,"field":219},{"key":227,"name":228,"field":219},{"key":230,"name":231,"field":219},{"key":233,"name":234,"field":219},{"key":236,"name":237,"field":219},{"key":256,"name_tr":257,"name_en":257,"sort":258,"specializations":259},"devops-cloud","DevOps \u002F Cloud",4,[260,261,264,267,270,273,276],{"key":200,"name":201,"field":256},{"key":262,"name":263,"field":256},"aws","AWS",{"key":265,"name":266,"field":256},"gcp","GCP",{"key":268,"name":269,"field":256},"azure","Azure",{"key":271,"name":272,"field":256},"kubernetes","Kubernetes",{"key":274,"name":275,"field":256},"terraform","Terraform",{"key":277,"name":278,"field":256},"linux","Linux",{"key":5,"name_tr":6,"name_en":6,"sort":280,"specializations":281},5,[282,283,284,285],{"key":200,"name":201,"field":5},{"key":106,"name":107,"field":5},{"key":99,"name":100,"field":5},{"key":103,"name":104,"field":5},{"key":287,"name_tr":288,"name_en":289,"sort":290,"specializations":291},"database","Veritabanı","Database",6,[292,293,296,299,302],{"key":200,"name":201,"field":287},{"key":294,"name":295,"field":287},"postgresql","PostgreSQL",{"key":297,"name":298,"field":287},"mysql","MySQL",{"key":300,"name":301,"field":287},"mongodb","MongoDB",{"key":303,"name":304,"field":287},"redis","Redis",{"key":306,"name_tr":307,"name_en":308,"sort":309,"specializations":310},"mobile","Mobil","Mobile",7,[311,312,315,318,321],{"key":200,"name":201,"field":306},{"key":313,"name":314,"field":306},"ios-swift","iOS (Swift)",{"key":316,"name":317,"field":306},"android-kotlin","Android (Kotlin)",{"key":319,"name":320,"field":306},"flutter","Flutter",{"key":322,"name":323,"field":306},"react-native","React Native",{"key":325,"name_tr":326,"name_en":327,"sort":328,"specializations":329},"security","Güvenlik","Security",8,[330,331,334,337,340,343],{"key":200,"name":201,"field":325},{"key":332,"name":333,"field":325},"appsec","AppSec",{"key":335,"name":336,"field":325},"offensive-pentest","Offensive \u002F Pentest",{"key":338,"name":339,"field":325},"cloud-security","Cloud Security",{"key":341,"name":342,"field":325},"devsecops","DevSecOps",{"key":344,"name":345,"field":325},"blue-team-incident","Blue Team \u002F Incident",{"key":347,"name_tr":348,"name_en":349,"sort":350,"specializations":351},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[352],{"key":200,"name":201,"field":347},{"key":354,"name_tr":355,"name_en":355,"sort":356,"specializations":357},"data-engineer","Data Engineer",10,[358],{"key":200,"name":201,"field":354},{"key":360,"name_tr":361,"name_en":362,"sort":363,"specializations":364},"game-dev","Oyun Geliştirme","Game Development",11,[365],{"key":200,"name":201,"field":360},{"key":367,"name_tr":368,"name_en":368,"sort":369,"specializations":370},"ml-engineer","ML Engineer",12,[371],{"key":200,"name":201,"field":367},[14,15,16],{"junior":374,"mid":376,"senior":377},{"questions":375,"median_sec":3},20,{"questions":375,"median_sec":3},{"questions":375,"median_sec":3},[379,10],"tr",[381,382],"google","github",21750,true]