If you are using Primefaces you can use partial submit.
For your example:
<h:form>
<p:panelGrid id="grid1">
<p:inputText required="true" id="inp1" value="#{test.value1}"/>
<p:inputText required="true" id="inp2" value="#{test.value2}"/>
<p:commandButton partialSubmit="true" process="@this inp1 inp2" action="#{test.someAction()}" value="validation" update="grid1"/>
</p:panelGrid>
<p:panelGrid id="grid2">
<p:inputText required="true" id="inp3" value="#{test.value3}"/>
<p:inputText required="true" id="inp4" value="#{test.value4}"/>
<p:inputText required="true" id="inp5" value="#{test.value5}"/>
<p:commandButton partialSubmit="true" process="@this inp3 inp4 inp5" action="#{test.someAction()}" value="validation" update="grid2"/>
</p:panelGrid>
</h:form>
Or you can palce grids with buttons in separate forms. Beacuse by default ajax request posts (and validates) values only from current form.
<h:form>
<p:panelGrid id="grid1">
<p:inputText required="true" id="inp1" value="#{test.value1}"/>
<p:inputText required="true" id="inp2" value="#{test.value2}"/>
<p:commandButton action="#{test.someAction()}" value="validation" update="@form"/>
</p:panelGrid>
</h:form>
<h:form>
<p:panelGrid>
<p:inputText required="true" id="inp3" value="#{test.value3}"/>
<p:inputText required="true" id="inp4" value="#{test.value4}"/>
<p:inputText required="true" id="inp5" value="#{test.value5}"/>
<p:commandButton action="#{test.someAction()}" value="validation" update="@form"/>
</p:panelGrid>
</h:form>