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>