A computer-implemented method, comprising: initiating execution of an application on a virtual compute instance comprising a graphics processing unit, GPU, interface configured to access a GPU resource over a network using a remoting protocol comprising encapsulated graphics application programming interface, API, commands; determining one or more GPU requirements associated with the execution of the application; selecting a physical GPU resource from a pool of available physical GPU resources to implement a virtual GPU of a virtual GPU class of a plurality of virtual GPU classes, the virtual GPU class selected based at least in part on the one or more GPU requirements, wherein the virtual GPU class represents subdivisions of graphics processing capabilities of a physical GPU, and wherein the selected virtual GPU class meets the requirements associated with the execution of the application; and attaching a virtual GPU of the selected virtual GPU class to the virtual compute instance after initiation of the execution of the application, wherein the virtual GPU is implemented using the physical GPU resource selected from the pool and accessible to the virtual compute instance using the encapsulated graphics API commands of the remoting protocol over a network; initiating execution of an additional application on the virtual compute instance; determining one or more additional GPU requirements associated with the execution of the additional application, wherein the additional GPU requirements differ at least in part from the GPU requirements; selecting an additional physical GPU resource from the pool of available physical GPU resources to implement an additional virtual GPU of an additional virtual GPU class, based at least in part on the one or more additional GPU requirements, wherein the additional virtual GPU class is different from the virtual GPU class; and attaching an additional virtual GPU of the selected additional GPU class to the virtual compute instance based at least in part on initiation of the execution of the additional application, wherein the additional virtual GPU is implemented using the additional physical GPU resource selected from the pool and accessible to the virtual compute instance over the network, and wherein output of the additional virtual GPU associated with the execution of the additional application is generated concurrently with output of the virtual GPU associated with the execution of the application. initiating execution of an application on a virtual compute instance comprising a graphics processing unit, GPU, interface configured to access a GPU resource over a network using a remoting protocol comprising encapsulated graphics application programming interface, API, commands; determining one or more GPU requirements associated with the execution of the application; selecting a physical GPU resource from a pool of available physical GPU resources to implement a virtual GPU of a virtual GPU class of a plurality of virtual GPU classes, the virtual GPU class selected based at least in part on the one or more GPU requirements, wherein the virtual GPU class represents subdivisions of graphics processing capabilities of a physical GPU, and wherein the selected virtual GPU class meets the requirements associated with the execution of the application; and attaching a virtual GPU of the selected virtual GPU class to the virtual compute instance after initiation of the execution of the application, wherein the virtual GPU is implemented using the physical GPU resource selected from the pool and accessible to the virtual compute instance using the encapsulated graphics API commands of the remoting protocol over a network; initiating execution of an additional application on the virtual compute instance; determining one or more additional GPU requirements associated with the execution of the additional application, wherein the additional GPU requirements differ at least in part from the GPU requirements; selecting an additional physical GPU resource from the pool of available physical GPU resources to implement an additional virtual GPU of an additional virtual GPU class, based at least in part on the one or more additional GPU requirements, wherein the additional virtual GPU class is different from the virtual GPU class; and attaching an additional virtual GPU of the selected additional GPU class to the virtual compute instance based at least in part on initiation of the execution of the additional application, wherein the additional virtual GPU is implemented using the additional physical GPU resource selected from the pool and accessible to the virtual compute instance over the network, and wherein output of the additional virtual GPU associated with the execution of the additional application is generated concurrently with output of the virtual GPU associated with the execution of the application.