By default a conv kernel will use all input channels of the incoming activation to compute the activation map. If you use the groups argument, the kernel’s channels as well as the input channels will be “split” so that the convolution operation would be equivalent to having multiple conv layers side by side which process only the corresponding subset of the input activation. The result will be concatenated afterwards.
E.g. if groups=in_channels, each channel of the input activation would get its own set of conv filters.