Refactored paths
This commit is contained in:
@@ -0,0 +1,199 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"id": "ca08df84",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Using device: cuda\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Step 0/1000, Loss: 1.0013\n",
|
||||
"Step 10/1000, Loss: 1.0088\n",
|
||||
"Step 20/1000, Loss: 0.9956\n",
|
||||
"Step 30/1000, Loss: 0.9781\n",
|
||||
"Step 40/1000, Loss: 0.9613\n",
|
||||
"Step 50/1000, Loss: 0.9313\n",
|
||||
"Step 60/1000, Loss: 0.8927\n",
|
||||
"Step 70/1000, Loss: 0.8503\n",
|
||||
"Step 80/1000, Loss: 0.7537\n",
|
||||
"Step 90/1000, Loss: 0.6689\n",
|
||||
"Step 100/1000, Loss: 0.6063\n",
|
||||
"Step 110/1000, Loss: 0.5172\n",
|
||||
"Step 120/1000, Loss: 0.4592\n",
|
||||
"Step 130/1000, Loss: 0.4044\n",
|
||||
"Step 140/1000, Loss: 0.3610\n",
|
||||
"Step 150/1000, Loss: 0.3175\n",
|
||||
"Step 160/1000, Loss: 0.2825\n",
|
||||
"Step 170/1000, Loss: 0.2560\n",
|
||||
"Step 180/1000, Loss: 0.2360\n",
|
||||
"Step 190/1000, Loss: 0.2203\n",
|
||||
"Step 200/1000, Loss: 0.1930\n",
|
||||
"Step 210/1000, Loss: 0.1854\n",
|
||||
"Step 220/1000, Loss: 0.1723\n",
|
||||
"Step 230/1000, Loss: 0.1546\n",
|
||||
"Step 240/1000, Loss: 0.1386\n",
|
||||
"Step 250/1000, Loss: 0.1271\n",
|
||||
"Step 260/1000, Loss: 0.1109\n",
|
||||
"Step 270/1000, Loss: 0.1032\n",
|
||||
"Step 280/1000, Loss: 0.0899\n",
|
||||
"Step 290/1000, Loss: 0.0807\n",
|
||||
"Step 300/1000, Loss: 0.0750\n",
|
||||
"Step 310/1000, Loss: 0.0813\n",
|
||||
"Step 320/1000, Loss: 0.0612\n",
|
||||
"Step 330/1000, Loss: 0.0544\n",
|
||||
"Step 340/1000, Loss: 0.0552\n",
|
||||
"Step 350/1000, Loss: 0.0446\n",
|
||||
"Step 360/1000, Loss: 0.0403\n",
|
||||
"Step 370/1000, Loss: 0.0350\n",
|
||||
"Step 380/1000, Loss: 0.0612\n",
|
||||
"Step 390/1000, Loss: 0.0364\n",
|
||||
"Step 400/1000, Loss: 0.0322\n",
|
||||
"Step 410/1000, Loss: 0.0302\n",
|
||||
"Step 420/1000, Loss: 0.0519\n",
|
||||
"Step 430/1000, Loss: 0.0319\n",
|
||||
"Step 440/1000, Loss: 0.0260\n",
|
||||
"Step 450/1000, Loss: 0.0208\n",
|
||||
"Step 460/1000, Loss: 0.0409\n",
|
||||
"Step 470/1000, Loss: 0.0291\n",
|
||||
"Step 480/1000, Loss: 0.0234\n",
|
||||
"Step 490/1000, Loss: 0.0194\n",
|
||||
"Step 500/1000, Loss: 0.0274\n",
|
||||
"Step 510/1000, Loss: 0.0231\n",
|
||||
"Step 520/1000, Loss: 0.0199\n",
|
||||
"Step 530/1000, Loss: 0.0154\n",
|
||||
"Step 540/1000, Loss: 0.0278\n",
|
||||
"Step 550/1000, Loss: 0.0185\n",
|
||||
"Step 560/1000, Loss: 0.0180\n",
|
||||
"Step 570/1000, Loss: 0.0152\n",
|
||||
"Step 580/1000, Loss: 0.0132\n",
|
||||
"Step 590/1000, Loss: 0.0111\n",
|
||||
"Step 600/1000, Loss: 0.0396\n",
|
||||
"Step 610/1000, Loss: 0.0179\n",
|
||||
"Step 620/1000, Loss: 0.0148\n",
|
||||
"Step 630/1000, Loss: 0.0123\n",
|
||||
"Step 640/1000, Loss: 0.0265\n",
|
||||
"Step 650/1000, Loss: 0.0133\n",
|
||||
"Step 660/1000, Loss: 0.0128\n",
|
||||
"Step 670/1000, Loss: 0.0107\n",
|
||||
"Step 680/1000, Loss: 0.0142\n",
|
||||
"Step 690/1000, Loss: 0.0202\n",
|
||||
"Step 700/1000, Loss: 0.0125\n",
|
||||
"Step 710/1000, Loss: 0.0107\n",
|
||||
"Step 720/1000, Loss: 0.0140\n",
|
||||
"Step 730/1000, Loss: 0.0195\n",
|
||||
"Step 740/1000, Loss: 0.0148\n",
|
||||
"Step 750/1000, Loss: 0.0109\n",
|
||||
"Step 760/1000, Loss: 0.0094\n",
|
||||
"Step 770/1000, Loss: 0.0121\n",
|
||||
"Step 780/1000, Loss: 0.0233\n",
|
||||
"Step 790/1000, Loss: 0.0151\n",
|
||||
"Step 800/1000, Loss: 0.0134\n",
|
||||
"Step 810/1000, Loss: 0.0117\n",
|
||||
"Step 820/1000, Loss: 0.0124\n",
|
||||
"Step 830/1000, Loss: 0.0221\n",
|
||||
"Step 840/1000, Loss: 0.0161\n",
|
||||
"Step 850/1000, Loss: 0.0136\n",
|
||||
"Step 860/1000, Loss: 0.0161\n",
|
||||
"Step 870/1000, Loss: 0.0194\n",
|
||||
"Step 880/1000, Loss: 0.0145\n",
|
||||
"Step 890/1000, Loss: 0.0149\n",
|
||||
"Step 900/1000, Loss: 0.0232\n",
|
||||
"Step 910/1000, Loss: 0.0166\n",
|
||||
"Step 920/1000, Loss: 0.0156\n",
|
||||
"Step 930/1000, Loss: 0.0276\n",
|
||||
"Step 940/1000, Loss: 0.0176\n",
|
||||
"Step 950/1000, Loss: 0.0152\n",
|
||||
"Step 960/1000, Loss: 0.0162\n",
|
||||
"Step 970/1000, Loss: 0.0143\n",
|
||||
"Step 980/1000, Loss: 0.0136\n",
|
||||
"Step 990/1000, Loss: 0.0117\n",
|
||||
"Total time: 67.25 s\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import torch\n",
|
||||
"import torch.nn as nn\n",
|
||||
"import torch.optim as optim\n",
|
||||
"import time\n",
|
||||
"\n",
|
||||
"device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
|
||||
"print(\"Using device:\", device)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# Огромные параметры\n",
|
||||
"N, D_in, H1, H2, H3, D_out = 300_000, 4096, 2048, 1024, 512, 10\n",
|
||||
"batch_size = 16_384 # большой батч\n",
|
||||
"steps = 1000 # много итераций для длительной нагрузки\n",
|
||||
"\n",
|
||||
"# Случайные данные на GPU\n",
|
||||
"x = torch.randn(N, D_in, device=device, dtype=torch.float32)\n",
|
||||
"y = torch.randn(N, D_out, device=device, dtype=torch.float32)\n",
|
||||
"\n",
|
||||
"model = nn.Sequential(\n",
|
||||
" nn.Linear(D_in, H1),\n",
|
||||
" nn.ReLU(),\n",
|
||||
" nn.Linear(H1, H2),\n",
|
||||
" nn.ReLU(),\n",
|
||||
" nn.Linear(H2, H3),\n",
|
||||
" nn.ReLU(),\n",
|
||||
" nn.Linear(H3, D_out)\n",
|
||||
").to(device)\n",
|
||||
"\n",
|
||||
"loss_fn = nn.MSELoss()\n",
|
||||
"optimizer = optim.Adam(model.parameters(), lr=1e-3)\n",
|
||||
"\n",
|
||||
"start = time.time()\n",
|
||||
"for t in range(steps):\n",
|
||||
" idx = torch.randint(0, N, (batch_size,), device=device)\n",
|
||||
" x_batch = x[idx]\n",
|
||||
" y_batch = y[idx]\n",
|
||||
"\n",
|
||||
" y_pred = model(x_batch)\n",
|
||||
" loss = loss_fn(y_pred, y_batch)\n",
|
||||
"\n",
|
||||
" optimizer.zero_grad()\n",
|
||||
" loss.backward()\n",
|
||||
" optimizer.step()\n",
|
||||
"\n",
|
||||
" if t % 10 == 0:\n",
|
||||
" # замедляем вывод, чтобы можно было наблюдать\n",
|
||||
" print(f\"Step {t}/{steps}, Loss: {loss.item():.4f}\")\n",
|
||||
"\n",
|
||||
"end = time.time()\n",
|
||||
"print(f\"Total time: {end-start:.2f} s\")\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": ".venv",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.11.7"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
Reference in New Issue
Block a user