diff --git a/.gitignore b/.gitignore index 025ba2b..f54e060 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. +temp + # dependencies /node_modules /.pnp diff --git a/app/blog/[slug]/page.tsx b/app/blog/[slug]/page.tsx index 53d8a20..f2880b3 100644 --- a/app/blog/[slug]/page.tsx +++ b/app/blog/[slug]/page.tsx @@ -10,7 +10,6 @@ import type { ComponentPropsWithoutRef, ReactNode } from 'react'; import { TableOfContents } from '@/components/mdx/TableOfContents'; import { SideNote } from '@/components/mdx/SideNote'; import { Citation, Bibliography } from '@/components/mdx/Citation'; -import { MobileTableOfContents } from '@/components/mdx/MobileTableOfContents'; import { formatPostDate } from '@/lib/format'; const slugify = (text: string): string => { @@ -261,8 +260,6 @@ export default async function BlogPost({ params }: Props) {

- -

Writing

- Notes on software, deep learning, and research. + Notes on GPUs, models, and the details underneath.

- A small archive of ideas, experiments, and things worth slowing down enough to explain. + Hardware quirks, deep learning systems, and research problems + that needed more than the product page.

@@ -57,7 +58,7 @@ export default function BlogIndex() { ))} - Read essay + Read @@ -68,7 +69,7 @@ export default function BlogIndex() {

Archive

- {posts.length} published {posts.length === 1 ? 'essay' : 'essays'}. The archive stays selective. + {posts.length} {posts.length === 1 ? 'essay' : 'essays'} published so far. I publish when I have a real question to chase down.

diff --git a/app/layout.tsx b/app/layout.tsx index 87d9a38..4dc72a2 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -31,10 +31,10 @@ export const metadata: Metadata = { default: "Akshay Kolli", template: "%s | Akshay Kolli", }, - description: "Personal website of Akshay Kolli — CS PhD Student at UMass Lowell researching World Models, Reinforcement Learning, and Multi-Agent Systems.", + description: "Akshay Kolli is a CS PhD student at UMass Lowell working on world models for RL, ML hardware, GPUs, and deep learning systems.", openGraph: { title: "Akshay Kolli", - description: "CS PhD Student at UMass Lowell researching World Models, Reinforcement Learning, and Multi-Agent Systems.", + description: "CS PhD student at UMass Lowell working on world models for RL, ML hardware, GPUs, and deep learning systems.", siteName: "Akshay Kolli", type: "website", }, diff --git a/app/page.tsx b/app/page.tsx index 787f89a..8a6c400 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -12,16 +12,17 @@ export default function Home() {
-

Akshay Kolli / Research + Writing

+

Akshay Kolli / UMass Lowell

- World models and reinforcement learning. + World models for RL.

- I'm a CS PhD student at UMass Lowell building world models for autonomous agents. + I'm a CS PhD student working on world models for reinforcement learning, + ML hardware, GPUs, and deep learning systems.

diff --git a/app/projects/graph-attention-topology/page.tsx b/app/projects/graph-attention-topology/page.tsx index d969476..a303f50 100644 --- a/app/projects/graph-attention-topology/page.tsx +++ b/app/projects/graph-attention-topology/page.tsx @@ -14,34 +14,34 @@ const paperLinks = [ const highlights = [ { - value: "No known graph", - label: "Learns topology without prior adjacency examples.", + value: "No graph labels", + label: "Learns from trajectories without seeing adjacency examples.", }, { value: "Unknown dynamics", - label: "Uses observed states instead of hand-specified equations.", + label: "Works from observed state sequences, not hand-written dynamics.", }, { - value: "Attention as edges", - label: "Interprets learned attention scores as the graph estimate.", + value: "Attention becomes edges", + label: "Uses attention scores as the topology estimate.", }, ]; const steps = [ - "Embed every agent into a shared latent space.", - "Project embeddings into key/query vectors and compute pairwise attention.", - "Translate observed agent states into values.", - "Predict the next state and read the attention matrix as topology.", + "Put each agent in a shared latent space.", + "Build key/query pairs and compute attention between agents.", + "Use observed states as the values passed through attention.", + "Forecast the next state, then threshold attention to recover topology.", ]; export const metadata: Metadata = { title: "Graph Attention Topology Inference", description: - "Project page for Graph Attention Inference of Network Topology in Multi-Agent Systems.", + "A project page for inferring hidden multi-agent network topology with graph attention.", openGraph: { title: "Graph Attention Inference of Network Topology in Multi-Agent Systems", description: - "A graph-attention approach for inferring hidden network topology from multi-agent trajectories.", + "Inferring hidden network topology from multi-agent trajectories with graph attention.", type: "article", publishedTime: "2024-10-26", images: [ @@ -117,7 +117,7 @@ export default function GraphAttentionProjectPage() { Graph Attention Inference of Network Topology

- Inferring the hidden graph behind a multi-agent system by training attention to predict what each agent does next. + We use next-state prediction to expose the interaction graph behind a multi-agent system.

@@ -196,14 +196,14 @@ export default function GraphAttentionProjectPage() {

Overview

- Predict the next state, then read the graph from what the model attended to. + Train on motion. Read the graph from attention.

- The paper studies a practical problem in networked multi-agent systems: the agents move, synchronize, or converge, but the interaction graph behind that behavior is not given. + In many multi-agent systems, you can watch agents move, synchronize, or settle, but you are not given who influences whom.

- The model is trained on state trajectories from consensus dynamics and Kuramoto oscillators. During prediction, attention scores between agent embeddings become an interpretable approximation of the adjacency matrix. + This project tests whether a predictor trained on trajectories can recover that missing adjacency matrix. On consensus dynamics and Kuramoto oscillators, the learned attention scores become a usable proxy for edges.

@@ -211,7 +211,7 @@ export default function GraphAttentionProjectPage() {
@@ -221,10 +221,10 @@ export default function GraphAttentionProjectPage() {

Method

- A topology estimate falls out of the attention layer. + The graph is never supervised directly.

- Instead of supervising the graph directly, the model learns to forecast the system. The attention matrix is then thresholded and compared with the true graph. + The model learns the dynamics first. After training, we threshold the attention matrix and compare the inferred edges with the true graph.

@@ -243,7 +243,7 @@ export default function GraphAttentionProjectPage() {
@@ -252,31 +252,31 @@ export default function GraphAttentionProjectPage() {

Results

- Strongest graph recovery appears with smaller systems, and more simulations help larger systems. + Smaller systems recover cleanly; larger ones improve with more simulations.

- F1 link-prediction scores are above a random baseline for both tested dynamics. Consensus dynamics are easier than Kuramoto oscillators, while additional simulation data improves larger-agent inference. + F1 scores beat a random baseline for both dynamics. Consensus is the easier case; Kuramoto needs more data as the number of agents grows.

-

training behavior

+

training trace

- Attention first learns the obvious self-dependencies, then gradually recovers inter-agent structure as training progresses. + Early training mostly finds self-dependencies. Later epochs start assigning weight to the agent-to-agent links.

diff --git a/app/projects/page.tsx b/app/projects/page.tsx index 8f0f4bc..dd6b6ec 100644 --- a/app/projects/page.tsx +++ b/app/projects/page.tsx @@ -9,8 +9,8 @@ const projects = [ title: "Graph Attention Inference of Network Topology", eyebrow: "MECC 2024 / Multi-Agent Systems", description: - "Inferring hidden interaction graphs from multi-agent trajectories by training attention to predict each agent's next state.", - status: "Paper project", + "A graph-attention model that recovers hidden interaction graphs from trajectory data while learning to predict the next state.", + status: "Published paper", year: "2024", image: graphAttentionImage, imageAlt: "Graph attention model architecture diagram", @@ -20,10 +20,10 @@ const projects = [ export const metadata: Metadata = { title: "Projects", - description: "Research projects and paper pages by Akshay Kolli.", + description: "Selected projects on world models, ML hardware, GPUs, deep learning, and the occasional multi-agent systems paper.", openGraph: { title: "Projects", - description: "Research projects and paper pages by Akshay Kolli.", + description: "Selected projects on world models, ML hardware, GPUs, deep learning, and the occasional multi-agent systems paper.", }, }; @@ -35,10 +35,11 @@ export default function ProjectsPage() {

Projects

- Research pages and technical artifacts. + World models, GPUs, and deep learning systems.

- A compact index of paper pages, experiments, and systems work. + Most of my current work sits around ML hardware, deep learning models, + and world models for RL. This topology paper is the multi-agent exception.

@@ -77,7 +78,7 @@ export default function ProjectsPage() { href={project.href} className="font-medium text-ink underline decoration-line-strong underline-offset-4 transition-colors hover:text-accent hover:decoration-accent" > - Open project + Read project

{project.tags.map((tag) => ( diff --git a/app/resume/page.tsx b/app/resume/page.tsx index 0134a55..2a1fb20 100644 --- a/app/resume/page.tsx +++ b/app/resume/page.tsx @@ -2,27 +2,27 @@ import type { Metadata } from 'next'; export const metadata: Metadata = { title: 'Resume', - description: 'Experience, education, and technical skills of Akshay Kolli.', + description: "Akshay Kolli's resume: research, engineering, education, and technical skills.", openGraph: { title: 'Resume', - description: 'Experience, education, and technical skills of Akshay Kolli.', + description: "Akshay Kolli's resume: research, engineering, education, and technical skills.", }, }; const experience = [ { title: 'PhD in Computer Science', - org: 'University of Massachusetts', + org: 'University of Massachusetts Lowell', period: 'Jan 2025 – Present', bullets: [], }, { title: 'Research Assistant', - org: 'Exalabs, University of Massachusetts', + org: 'Exalabs, University of Massachusetts Lowell', period: 'Sep 2022 – Present', bullets: [ - 'Designing state-of-the-art ML pipelines for graph properties and trajectory forecasting.', - 'Reduced multi-agent simulation time by 1000x.', + 'Building ML pipelines for graph-property prediction and trajectory forecasting.', + 'Cut multi-agent simulation time by 1000x.', ], }, { @@ -72,10 +72,10 @@ export default function ResumePage() {

Resume

- Experience, education, and technical depth. + Research and engineering work.

- Research, engineering, and systems work across academia and industry. + My background across ML research, simulation tooling, and production software.

diff --git a/components/layout/Footer.tsx b/components/layout/Footer.tsx index d6ab8cc..bfafd0b 100644 --- a/components/layout/Footer.tsx +++ b/components/layout/Footer.tsx @@ -3,7 +3,7 @@ export function Footer() {